正确的方式/顺序来创建DbContext

时间:2016-07-08 19:06:34

标签: c# .net linq entity-framework-6 dbcontext

为我的数据库生成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:类型'实体'已包含' Bills'

的定义

  

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:类型'实体'已包含' Utilities'

的定义

如果这还不够,我注意到每次生成新的EDMX文件时,它似乎都想在我的配置文件中创建一个新的连接字符串,并且似乎没有给我一个使用选项现有的。

任何人都可以指向一个资源,提供以正确方式和正确顺序执行这些任务的示例吗?当我谷歌这一点,我得到的主要是代码优先的文章,根本没有解决这个问题。

1 个答案:

答案 0 :(得分:2)

  

为我的数据库生成DbContext的正确方法是什么。 (我先使用数据库。)

如果您首先使用数据库,则需要和ADO.NET实体数据模型一起使用。

  

如果我没有首先创建ADO.NET实体数据模型(EDMX文件),看起来EF 6.x DbContext Generator选项会生成空文件。

如果您首先使用数据库,则不应运行任何这些命令:Enable-Migrations,Add-Migration,Update-Database。您的第一步是创建EDMX文件。

  

但是,如果我首先创建EDMX文件然后创建DbContext,我似乎会得到带有错误的冲突符号,例如:

创建EDMX文件后,您的DbContext也将在文件中创建。您可以通过扩展edmx文件来访问此文件,然后使用.Context.tt并打开您的.Context.cs类。注意这个类的构造函数如何包含:base(“name = yourdbEntities”),可以在web.config文件中找到。

  

如果这还不够,我注意到每次生成新的EDMX文件时,它似乎都想在我的配置文件中创建一个新的连接字符串,但似乎没有给我一个使用现有文件的选项。

注释掉您的连接字符串,并在创建edmx文件时创建一个新字符串。如果一切顺利,您可以回来删除它。

以下是您可能会发现有用的一些资源:

http://www.tutorialspoint.com/entity_framework/entity_database_first_approach.htm https://www.youtube.com/watch?v=o-cV_fSNMqw

我希望你觉得这个答案很有帮助。