【发布时间】:2016-07-08 19:06:34
【问题描述】:
为我的数据库生成 DbContext 的正确方法是什么。 (我首先使用数据库。)
如果我不先创建 ADO.NET 实体数据模型(EDMX 文件),EF 6.x DbContext Generator 选项似乎会生成空文件。
但是,如果我先创建 EDMX 文件,然后再创建 DbContext,我似乎会得到相互冲突的符号,并出现以下错误:
以下方法或属性之间的调用不明确:“BillsEntities.BillsEntities()”和“BillsEntities.BillsEntities()”
和
d:\users\jonathan\documents\visual studio 2015\Projects\BillTracking\BillsDomain\BillsModel.Context.cs(23,33,23,48):错误 CS0111:类型“实体”已经定义了一个名为“ OnModelCreating' 具有相同的参数类型
和
d:\users\jonathan\documents\visual studio 2015\Projects\BillTracking\BillsDomain\BillsModel.Context.cs(28,36,28,41):错误 CS0102:“实体”类型已包含'账单'
和
d:\users\jonathan\documents\visual studio 2015\Projects\BillTracking\BillsDomain\BillsModel.Context.cs(29,39,29,47):错误 CS0102:“实体”类型已包含“付款”
和
d:\users\jonathan\documents\visual studio 2015\Projects\BillTracking\BillsDomain\BillsModel.Context.cs(30,39,30,48):错误 CS0102:“实体”类型已包含“实用程序”
如果这还不够,我注意到每次我生成一个新的 EDMX 文件时,它似乎都想在我的配置文件中创建一个新的连接字符串,并且似乎没有给我一个使用现有连接字符串的选项。
谁能给我指出一个资源,该资源提供了以正确方式和正确顺序执行这些任务的示例?当我在谷歌上搜索时,我得到的大多是代码优先的文章,根本没有解决这个问题。
【问题讨论】:
-
您是否配置 EDMX 以生成与包含 EDMX 的项目不同的项目实体?如果是这样,这可能是重复类的原因。该生成将第一次在包含 EDMX 的项目和您的其他目标项目中创建类。然后,您可以删除 .edmx 文件下的 .tt 文件(在解决方案资源管理器中),它们不会在后续代码生成中重新生成。
-
@user469104:不,我创建了一个单独的域项目,我的所有数据库模型、EDMX 和实体都进入了该域项目。
标签: c# .net linq entity-framework-6 dbcontext