首先具有一个 EF6 模型(数据库优先)和一个代码的解决方案
本文关键字:代码 解决方案 一个 有一个 具有一 EF6 模型 数据库 | 更新日期: 2023-09-27 18:34:34
我有一个有多个数据库的解决方案。我们正在使用 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 未处理
消息=上下文在代码优先模式下使用从 EDMX 文件生成的代码,用于数据库优先或模型优先开发。 这将无法正常工作。若要解决此问题,请不要删除引发此异常的代码行。如果要使用"数据库优先"或"模型优先",请确保实体框架连接字符串包含在启动项目的 app.config 或 web.config 中。如果要创建自己的 DbConnection,请确保它是实体连接,而不是其他类型的 DbConnection,并将其传递给采用 DbConnection 的基本 DbContext 构造函数之一。若要了解有关代码优先、数据库优先和模型优先的详细信息,请参阅此处的实体框架文档:http://go.microsoft.com/fwlink/?LinkId=394715
堆栈跟踪: at Arkle.DAL.EF.ArkleEntities.OnModelCreateing(DbModelBuilder modelBuilder(
无论如何,在一个解决方案中允许代码优先和数据库优先吗?
好的,深入了解这一点。基本上,如果您在两个上下文中共享连接,则这不起作用。但是,如果您为两者使用不同的连接,它可以工作。
感謝Ben Robinson為我指出了正確的方向。