如何正确地使用Entity Framework Database First
2个回答
展开全部
毕设依旧在不紧不慢地以每天解决一个问题的进度进行中。今天遇到的问题就是在建立数据模型时遇到的。因为项目是基于数据库构建的,所以理所应当地采用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,这里把其中的一个“注释”摘录如下:
测试方法 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-27
展开全部
Database-first(数据库先行):从一个数据库开始,然后实体框架生成相应代码。 Model-first(模型先行):先从一个可视化模型开始,然后实体框架生成数据库和代码。 Code-first(代码先行):先从代码开始,然后实体框架生成数据库
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询