从数据库更新时保留对模型的更改?

时间:2015-03-02 20:08:23

标签: .net entity-framework

我正在使用EF来使用Model.context.tt模板生成我的模型described in this post.

我的模型生成后,我想进入并对模型进行一些修改。我能够做到这一点,但我遇到的问题是,如果我从数据库更新我的模型,它将覆盖我已经完成的任何自定义。

有没有办法保留我在继续从数据库更新时对模型所做的更改?

1 个答案:

答案 0 :(得分:1)

您需要创建具有完全相同名称的部分类,并且在与生成的模型相同的命名空间中,您将能够修改该类,而不会在每次重新生成T4模板时丢失更改。

如果您需要对原始类进行更精细的调整编辑,则必须编辑.tt模板。虽然我会 HIGHLY 建议查看Code First(这可能比现有数据库更有可能),因为您可以完全控制类+映射。

您可以从复制当前生成的文件开始,并将它们用作代码优先模型的基础。

一个常见的误解是,由于名称,Code First不适用于现有数据库/数据库优先工作。但事实并非如此。

  • 代码优先 =编写代码并使用属性或装饰模型 上下文中的自定义映射。
  • EDMX / Designer =使用Visual Studio设计器创建XML(.edmx),然后由T4(.tt)模板处理,以生成最终的类+上下文。 我个人认为这种方法非常痛苦,因为我经常松动变化(自定义映射/关系等)
  • 实体迁移 - 这是您首先编写代码的地方,与上面的" Code First" 方法相同,但您可以在以下位置运行迁移为了生成和升级/降级数据库。