管理EntityContext生命周期有很多问题,
我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重复使用.大.
但是在进行一些加速我的数据库访问的研究时,我遇到了这篇博文...
该帖子称,EF文件表现不佳相对于其他框架往往是由于EntityConnection对象被每一个新的时间创建的EntityContext需要的对象.
为了测试这一点,我在Global.asax.cs Application_Start()中手动创建了一个静态EntityConnection .
然后我使用语句将我的所有上下文转换为
using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
....
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,到目前为止,这似乎已经加快了一点点没有任何错误.
但这样安全吗?
使用应用程序范围的静态EntityConnection是否会引入竞争条件?
最好的问候,凯文
我有一个使用EF CTP5的应用程序.
在这种特殊情况下,我需要降解为一些经典ADO.NET(以读取在存储过程中,其中EF不支持多个结果集).
因此,我试图使用来自对象的现有连接字符串EntityConnection,如下所示:
var ctx = (this as IObjectContextAdapter).ObjectContext;
var efCon = ((EntityConnection) (ctx.Connection)).StoreConnection;
var con = new SqlConnection(efCon.ConnectionString);
con.Open(); // exception thrown
Run Code Online (Sandbox Code Playgroud)
当我调试时,我看到ConnectionString它不包含密码,只包含数据源,用户名,数据库等.
这是一个安全的事情,为什么他们删除它?EF是否在某处隐藏密码并仅在执行存储过程时使用它?
EF连接字符串与经典ADO.NET连接字符串不同,因为它具有元数据信息.
所以看起来我将要删除我需要的连接字符串的一部分,将其放在web.config中并将其传递给存储库.
当然必须有更好的方法!
ado.net connection-string sql-server-2008 entityconnection entity-framework-ctp5