生成DbContext后如何修改数据库?

Bja*_*eCK 3 c# asp.net-mvc entity-framework ef-code-first dbcontext

现在我已经通过以下方式从现有数据库生成了19个代码优先类:

  • 创建模型优先实体,并选择"从数据库生成"
  • 右键单击并选择"添加代码生成项"
  • EF 4.x DbContext Generater

我想要的所有课程都已生成,我对他们非常满意......

现在我的问题

  • 为什么它们都是生成的.cs文件嵌套在密封的.tt集合中?
  • 为什么我不能将它们复制粘贴到我喜欢的任何文件夹中,并像普通类一样对待它们?
  • 它只是我,或者当你这样做时,你是否无法使用迁移"update-database"?

我想我的整体问题是,为什么它们位于.tt文件夹中?我现在该如何更新我的数据库?通过手动编辑数据库然后更新Model,然后再次生成dbContext?或者是否有从.tt文件夹中获取.cs文件的技巧?

如何修改你的数据库生成您的DbContext后?

dan*_*wig 5

  • 为什么它们都是生成的.cs文件嵌套在密封的.tt集合中?

您的代码优先类不是代码优先类.它们是根据您的数据库架构生成的.因此,这是一种数据库优先的方法.首先使用数据库,您的实体类将基于数据库生成.换句话说,数据库首先出现,代码排在第二位..tt文件是一个T4模板,它决定如何根据数据库生成类.您可以更改数据库,然后重新生成实体类.

  • 为什么我不能将它们复制粘贴到我喜欢的任何文件夹中,并像普通类一样对待它们?

因为它们是生成的文件,基于T4模板.

  • 它只是我,或者当你这样做时,你是否无法使用迁移"update-database"?

这部分问题我无法回答肯定,而且必须推迟.然而,在我看来,你想要混合和匹配方法.听起来您希望首先根据数据库生成代码类,然后根据您添加到模型项目的新实体类更改数据库.是对的吗?

您可以放弃代码生成部分,只需使用纯代码优先方法,现在您已了解实体POCO应该是什么样子.我之前尝试过这个T4代码生成(在EF 4.1之前)并立即放弃它,因为正如您所见,由于生成了实体和DbContext类,您将无法控制面向对象的模型.