首页 > 编程知识 正文

ora-12543:tns:无法连接目标主机,ora01950 对表空间 无权限

时间:2023-05-04 02:30:19 阅读:119183 作者:2625

使用EF框架时,缺省情况下数据库访问字符串以明文形式存储在app.config或web.config中,相当于在数据库中裸奔。

实际上,EF在创建数据实体时可以指定连接字符串,而不是如何在app.config中读取连接字符串,但缺省情况下不提供。 (是不是缺了根)

在分析数据实体的构造函数中,您可以看到:

publicUserManageEntities () :base ) (name=usermanageentities ) )。

{

}

可见实体由基类DbContext创建,基类DbContext的构造函数如下所示:

//

//摘要://可以使用指定的字符串作为目标数据库的名称或连接字符串来构建新的上下文实例。 请参阅关于如何创建连接的类注释。 //

//参数://nameorconnectionstring ://数据库名称或连接字符串。

[ suppress message (' Microsoft.reliability ',' ca 20003360 disposeobjectsbeforelosingscope ' ) ]

[ suppress message (Microsoft.usage ),) ca 2214: donotcalloverridablemethodsinconstructors ] publicdbcontext ) striridadars

Name Or ConnectionString先生,为什么EF实体的构造函数默认情况下不能提供连接重载呢?

没办法,只能自己做。 需要两步:

1 .创建ef的连接字符串

这里可以使用EntityConnectionStringBuilder生成

entityconnectionstringbuilderecb=newentityconnectionstringbuilder (;

ECB.metadata=' RES ://*/user manage.csdl|RES ://*/user manage.MSL/*/user manage.SSL

ECB.provider=' system.data.sqlclient ';

ECB.providerconnectionstring=' data source=(local db (mssqllocaldb; 初始目录=用户管理; 集成安全=true; MultipleActiveResultSets=True; app=实体框架';

可以在ecb.ConnectionString中获取EF的连接字符串。

其中,元数据、提供商连接字符串可以从EF自动生成的连接字符串中分析引用进行使用

添加实体的构造函数以接受ecb.ConnectionString参数

原始构造函数:

publicUserManageEntities () :base ) (name=usermanageentities ) )。

{

}

此构造函数表示从app.config (或web.config )中检索名称为UserManageEntities的合并字符串作为构造函数的参数。

在此添加构造函数重载,以接收ecb.ConnectionString参数

publicusermanageentities (字符串控制) :base (字符串控制) )。

{

}

这样,在生成实例时就可以调用新的构造函数。

usermanageentitiesdb=newusermanageentities (ECB.connectionstring );

通过这样处理,可以将数据库访问密码封装在程序中,动态生成连接字符串,并使EF使用连接字符串来保护数据库。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。