繁体   English   中英

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

[英]How do you modify your database after generating your DbContext?

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

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

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

现在我的问题

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM