实体框架代码第一 - 开发策略

时间:2013-07-23 09:31:53

标签: entity-framework ef-code-first code-first ef-migrations

从头开始研究一个全新的项目。这意味着数据模型处于不断变化的过程中,加倍,因为事情不可避免地没有得到应有的计划。正在定期创建和更改模型类。

计划是使用最新版本的EF,其中包含所有简洁的代码优先。但是我们一直在绊倒框架在添加或更新表方面的限制。初始化选项似乎只允许完全删除和重新创建数据库,这不是很理想。

我看过迁移。但这似乎是一个破解坚果的大锤:我们不需要详细说明每一个小变化并用新的迁移支架进行更新。

有没有更好的策略来解决这个问题?例如,我开始编写一些单元测试,用一些测试数据预先填充其中一个上下文,但由于这会导致整个Db丢弃并重新创建,因此会导致所有其他上下文出现问题。或者可能使用自定义初始化程序为我们播种数据?我们如何在生产代码中轻松排除这些?

我们也想知道可能放弃代码优先并回到EDMX图表。至少这种方式的改变会导致更新的SQL命令,这些命令可以直接针对数据库运行。

感激地收到任何建议。

1 个答案:

答案 0 :(得分:1)

我想,imho,那个:

  • 由于数据库架构必须至少与您的模型匹配,您应该/必须详细说明每一个更改,并且代码首次迁移允许并跟踪随时间的变化

  • 代码首次迁移还允许为您迁移数据库架构

  • 代码首次迁移还允许您生成允许您迁移架构的sql

由于这些原因,代码首先与edmx方法一样好(如果不是更好)

请花几分钟时间来实施http://msdn.microsoft.com/en-us/data/jj591621.aspx

另一点,永远是imho,在一个完美的世界中,如果你对模型的业务进行单元测试,你不应该使用DAL,使用泛型集合。请注意linq对象与linq对实体的不同比较,例如关于区分大小写的情况。