从头开始研究一个全新的项目。这意味着数据模型处于不断变化的过程中,加倍,因为事情不可避免地没有得到应有的计划。正在定期创建和更改模型类。
计划是使用最新版本的EF,其中包含所有简洁的代码优先。但是我们一直在绊倒框架在添加或更新表方面的限制。初始化选项似乎只允许完全删除和重新创建数据库,这不是很理想。
我看过迁移。但这似乎是一个破解坚果的大锤:我们不需要详细说明每一个小变化并用新的迁移支架进行更新。
有没有更好的策略来解决这个问题?例如,我开始编写一些单元测试,用一些测试数据预先填充其中一个上下文,但由于这会导致整个Db丢弃并重新创建,因此会导致所有其他上下文出现问题。或者可能使用自定义初始化程序为我们播种数据?我们如何在生产代码中轻松排除这些?
我们也想知道可能放弃代码优先并回到EDMX图表。至少这种方式的改变会导致更新的SQL命令,这些命令可以直接针对数据库运行。
感激地收到任何建议。
答案 0 :(得分:1)
我想,imho,那个:
由于数据库架构必须至少与您的模型匹配,您应该/必须详细说明每一个更改,并且代码首次迁移允许并跟踪随时间的变化
代码首次迁移还允许为您迁移数据库架构
代码首次迁移还允许您生成允许您迁移架构的sql
由于这些原因,代码首先与edmx方法一样好(如果不是更好)
请花几分钟时间来实施http://msdn.microsoft.com/en-us/data/jj591621.aspx
另一点,永远是imho,在一个完美的世界中,如果你对模型的业务进行单元测试,你不应该使用DAL,使用泛型集合。请注意linq对象与linq对实体的不同比较,例如关于区分大小写的情况。