【发布时间】:2015-07-09 04:09:58
【问题描述】:
我有一个使用 Code First 和 EF 6.0.0.0 的数据层,并且我正在使用 Fluent API。我运行了 enable-migrations、add-migrations 和 update-database,并在 SQL Server 中创建了数据库。
然后我在另一个项目中创建了一个引用数据层的单元测试并运行它没有任何问题。当我向其中一个 Code First 类添加新属性时,问题就开始了。我再次运行 add-migrations 和 update-database 并看到 SQL Server 中反映的更改......到目前为止一切都很好。 但是当我尝试在包含单元测试的项目中使用新类时,出现以下异常:
"支持
上下文的模型自 数据库已创建。考虑使用 Code First 迁移来更新 数据库”
...其中
查看stackoverflow后,我尝试添加:
Database.SetInitializer<MyContext>(null);
...关闭了关于模型更改的异常,但随后又产生了一个新问题:
“列名‘描述’无效。”
...其中“描述”是添加到数据层类(以及新的 SQL Server 列)的新属性。
单元测试项目与数据层项目在同一解决方案中,并且具有对数据层 dll 的“项目”引用。
为什么EF认为数据模型和数据库不同步?为什么它认为“描述”是无效的列名?但当然,我真正想知道的是如何让它发挥作用?
自从我第一次发布此内容以来,我使用 SQL Server Profiler 查看在 SaveChanges() 期间生成的 SQL,并且脚本将在 SS Management Studio 中按预期运行,这表明列名没有任何问题,但那是DbUpdateException 报告的内容。
【问题讨论】:
-
请使用代码标记以提高您问题的可读性。
-
以防万一问题与单元测试框架有关,我创建了一个存根控制台应用程序来使用数据层但得到了相同的行为。
标签: c# entity-framework entity-framework-migrations