gre*_*fly 20 c# entity-framework code-first entity-framework-4.1 database-first
我基于现有数据库创建了一个实体框架模型,然后从模型中生成了POCO实体.我的web.config中的连接字符串不是实体框架,它只是标准连接字符串(它缺少CSDL,SSDL,MSL引用).
我可以编译我的应用程序,但是当我运行时,我收到此错误:
如果在Code First模式下使用,使用T4模板为Database First和Model First开发生成的代码可能无法正常工作.要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串.要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码
我的问题是,在我的代码中,它实现了POCO来自自动生成,我怎样才能让它像Code First一样?我不想在我的连接字符串中引用CSDL等.
Bri*_*ers 23
如果连接字符串具有元数据,则EF认为它是Model First或Database First.如果它是普通连接字符串,EF认为它是Code First.但是,如果你想先开始做模型但让EF认为你真的在做代码(这就是你正在做的事情),请确保你使用的是DbContext代码生成器,而不是默认代码生成器.代码首先POCO实际上是 - "普通的旧c#对象" - 根本没有特殊的数据库感知或更改跟踪内容.要使用DbContext代码生成器,请右键单击模型图并选择"添加新代码生成项...",然后选择ADO.NET DbContext生成器.此外,根据您命名主键和外键的方式和/或它们是否比简单的int ID更复杂,您可能需要填写一些代码来映射您在"OnModelCreating"方法中的对象之间的关系.上下文.删除该行throw new UnintendedCodeFirstException();并将其替换为您的映射代码.否则EF可能无法找出所有关系(请记住,它没有依赖的元数据).
希望这可以帮助.
小智 12
您的配置文件中需要以下内容:
<connectionStrings>
<add name="<The name of your class>"
connectionString="metadata=res://*/<test>.csdl|res://*/<test>.ssdl|res://*/<test>.msl;provider=System.Data.SqlClient;provider connection string="data source=<your source>;initial catalog=<your db>;persist security info=True;user id=<your user id>;password=<your password>;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19018 次 |
| 最近记录: |