代码相关信息:
.edmx
文件ADO.NET实体数据模型 - >来自数据库的EF Designer 我的DbContext
代码:
public partial class MySampleEntities : DbContext
{
public MySampleEntities ()
{
}
public MySampleEntities (string nameOrConnectionString)
: base(nameOrConnectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
...
}
使用以下示例代码修改模型的一种方法:
using (var dbContext = GetDbContext())
{
...
dbContext.Entry(blobItem).State = EntityState.Modified;
await dbContext.SaveChangesAsync();
}
单元测试用例信息:
一些单元测试代码:
var mockContext = new Mock<MySampleEntities>();
在一些数据库表列名更改后,使用初始数据库模式传递测试,并执行Visual Studio&#34;从数据库更新模型...&#34;命令在.edmx
图表上,更新所有相应的模型属性,构建代码,最后无法在代码dbContext.Entry(blobItem).State = EntityState.Modified
上运行单元测试,但有以下异常:
支持&#39; MySampleEntities&#39;自创建数据库以来,上下文已更改。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
已尝试解决方案:
Database.SetInitializer(null)
MySampleEntities
无法执行NuGet Package Manager命令,如Enable-Migrations
,Update-Database
等,但有以下异常,似乎是代码优先模式:
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException:在Code First模式下使用上下文,其中包含从EDMX文件生成的用于Database First或Model First开发的代码。这将无法正常工作。
我的问题: