如何正确地使用Entity Framework Database First

 我来答
温州网wc
2016-07-14 · TA获得超过143个赞
知道小有建树答主
回答量:301
采纳率:33%
帮助的人:296万
展开全部
  毕设依旧在不紧不慢地以每天解决一个问题的进度进行中。今天遇到的问题就是在建立数据模型时遇到的。因为项目是基于数据库构建的,所以理所应当地采用DB First来构造实体类和DbContext类。于是想也没想就直接在项目上右键->添加->新建项->ADO.NET 实体数据模型。然后一路“下一步”就把数据库的表映射成了实体类了。然后再按照以前的教程,建立IRepository接口定义数据库操作,并实现了其中的各个方法。看似一切顺利了,我就打算单元测试一下,可是没想到测试的运行抛出了异常。
  测试方法 OpenEcnu.Data.Tests.DbContextTest.GetUserDetailByUserIdTest 引发了异常:
  System.NotSupportedException: 不支持通过使用 Database First 或 Model First 创建的 DbContext 创建 DbModelBuilder 或写入 EDMX。只能从不是使用现有 DbCompiledModel 创建的 Code First DbContext 获取 EDMX。
  仔细查看生成的DataContext类,发现有一个OnModelCreating方法。内容如下:
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
  throw new UnintentionalCodeFirstException();
  }

  这里可以看到抛出了一个异常。而UnintentionalCodeFirstException类的定义见 sdn.microsoft.com/zh-cn/library/system.data.entity.infrastructure.unintentionalcodefirstexception(v=vs.113).aspx,这里把其中的一个“注释”摘录如下:
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第饿死鬼
2017-06-28 · TA获得超过1.4万个赞
知道小有建树答主
回答量:9936
采纳率:17%
帮助的人:1269万
展开全部
Database-first(数据库先行):从一个数据库开始,然后实体框架生成相应代码。 Model-first(模型先行):先从一个可视化模型开始,然后实体框架生成数据库和代码。 Code-first(代码先行):先从代码开始,然后实体框架生成数据库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式