小编esc*_*llc的帖子

分析EF数据库优先的问题仍然存在

使用EF 4.1和Mini-profiler 1.7.使用模型优先,从现有数据库扫描.EF生成一个派生自ObjectContext/ObjectSet的类,而不是DbContext/DbSet.我无法找到控制它的地方.

我尝试了流行的解决方案,但无济于事.

由于受挫,我还尝试使用显式的EntityConnection直接创建我的Context,这是直接使用ProfiledDbConnection创建的.我想绕过任何连接不是预期类型的​​机会.

public HomeController() {
try {
    string[] paths = new string[] { @"res://*/" };
    Assembly[] assys = new Assembly[] { Assembly.GetExecutingAssembly() };
    MetadataWorkspace mw = new MetadataWorkspace(paths, assys);
    string cnx = WebConfigurationManager.ConnectionStrings["XXXX"].ConnectionString;
    DbConnection cx = MvcMiniProfiler.Data.ProfiledDbConnection.Get(new SqlConnection(cnx), MiniProfiler.Current);
    //DbConnection cx = Database.DefaultConnectionFactory.CreateConnection(cnx);
    EntityConnection ec = new EntityConnection(mw, cx);
    db = new MyContextEntities(ec);
}
catch (Exception ex) {
    Trace.WriteLine("EDM failed: " + ex.Message);
    db = new MyContextEntities();
}
}
Run Code Online (Sandbox Code Playgroud)

我已经验证了正确的路径.但是,当实际运行LINQ查询时,我们得到一个异常:

无法将类型为"MvcMiniProfiler.Data.ProfiledDbConnection"的对象强制转换为"System.Data.SqlClient.SqlConnection".

违规声明是:

return query.ToList();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪更有趣,因为显然EF内部的东西绝对需要SqlConnection!

在system.Data.SqlClient.SqlCommand.set_DbConnection(DbConnection值)处于System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand,EntityTransaction …

entity-framework-4.1 asp.net-mvc-3 mvc-mini-profiler

6
推荐指数
1
解决办法
637
查看次数