Code First与Database First

我基于现有数据库创建了一个entity framework模型,然后从模型中生成了POCO实体。 我的web.config中的连接字符串不是entity framework,它只是标准连接字符串(它缺少CSDL,SSDL,MSL引用)。

我可以编译我的应用程序,但是当我运行时,我收到此错误:

如果在Code First模式下使用,使用T4模板为Database First和Model First开发生成的代码可能无法正常工作。 要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。 要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此exception的代码


我的问题是,在我的代码中,它实现了POCO来自自动生成,我怎样才能让它像Code First一样? 我不想在我的连接字符串中引用CSDL等。

如果连接字符串具有元数据,则EF认为它是Model First或Database First。 如果它是普通连接字符串,EF认为它是Code First。 但是,如果你想先开始做模型,但让EF认为你真的在做代码(这就是你正在做的事情),请确保你使用的是DbContext代码生成器,而不是默认代码生成器。 代码第一个POCO就是 – “普通的旧c#对象” – 根本没有特殊的数据库感知或更改跟踪内容。 要使用DbContext代码生成器,请右键单击模型图并选择“添加新代码生成项…”,然后选择ADO.NET DbContext生成器。 此外,根据您命名主键和外键的方式和/或它们是否比简单的int ID更复杂,您可能需要填写一些代码来映射您在“OnModelCreating”方法中的对象之间的关系。上下文。 删除行throw new UnintendedCodeFirstException(); 并将其替换为您的映射代码。 否则EF可能无法找出所有关系(请记住,它没有依赖的元数据)。

希望这可以帮助。

您的配置文件中需要以下内容:

    

我首先使用数据库并通过将EDMX生成的连接字符串复制到我的启动应用程序的app.config来解决此问题。 一个已经存在,但显然他们是不同的