c# - 具有一个 EF6 模型(数据库优先)和一个代码优先的解决方案

标签 c# entity-framework entity-framework-6

我有一个包含多个数据库的解决方案。 我们正在使用 EF6。

我们有一个 EF6 项目(代码优先)和一个 EF6 DB 优先项目。

var arkleModelDbFist = new Arkle.DAL.EF.ArkleEntities();
var CustomerOld= new Arkle.DAL.EF.Customer();
arkleModelDbFist.Customers.Add(CustomerOld); // Errors on this line
arkleModelDbFist.SaveChanges();


var arkleModelCodeFirst = new ArkleEfModel();
var customer= new customer_ef(); // note we have renamed this so it won't conflict, even though it is in seperate project
arkleModelCodeFirst.Customers.Add(customer);
arkleModelCodeFirst.SaveChanges();

我们收到以下错误。

System.Data.Entity.Infrastructure.UnintentionalCodeFirstException 未处理

Message=上下文正在代码优先模式下使用,代码是从数据库优先或模型优先开发的 EDMX 文件生成的。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用数据库优先或模型优先,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果您要创建自己的 DbConnection,请确保它是一个 EntityConnection 而不是其他类型的 DbConnection,并且您将它传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关代码优先、数据库优先和模型优先的更多信息,请参阅此处的 Entity Framework 文档:http://go.microsoft.com/fwlink/?LinkId=394715

堆栈跟踪: 在 Arkle.DAL.EF.ArkleEntities.OnModelCreating(DbModelBuilder modelBuilder)

有没有办法在一个解决方案中同时允许代码优先和数据库优先?

最佳答案

好的,深入了解这个问题。 基本上,如果您在两个上下文中共享一个连接,这是行不通的。 但是,如果您对两者使用不同的连接,则它会起作用。

感谢 Ben Robinson 为我指明了正确的方向。

关于c# - 具有一个 EF6 模型(数据库优先)和一个代码优先的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551453/

相关文章:

c# - Fluent Migrator 单元测试 : Holding onto Connection

c# - EF6.1.1 Code First 一对零/一关系

c# - 使用通配符搜索时获取文档中匹配的术语

c# - 在与 WPF 样式上的 setter 属性不同的类型上使用触发器属性

c# - WCF 3.5 REST 端点是否异步调用关联方法?

c# - 如何更改 PdfPTable 中的字体大小?

c# - ASP 标识角色不存在错误

c# - 加载相关对象时出现异常。 Entity Framework

entity-framework - 如何重命名应用于数据库的最后一个 Entity Framework 迁移

entity-framework - EF Code first - 多对多关系映射表,带有额外的列