3

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

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

我想要的所有类都生成了,我对它们很满意......

现在我的问题

  • 为什么它们所有生成的 .cs 文件都嵌套在密封的 .tt 集合中?
  • 为什么我不能将它们复制粘贴到我喜欢的任何文件夹中,并将它们视为普通类?
  • 只是我,还是当您这样做时无法使用迁移“更新数据库”?

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

生成 DbContext 后如何修改数据库

4

1 回答 1

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

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

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

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

  • 只是我,还是当您这样做时无法使用迁移“更新数据库”?

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

您可以放弃代码生成部分,只使用纯代码优先的方法,现在您已经了解了实体 POCO 的外观。我之前尝试过这种 T4 代码生成(EF 4.1 之前)并立即放弃它,因为正如您所见,由于生成了实体和 DbContext 类,您就失去了对面向对象模型的控制。

于 2012-07-05T03:51:29.163 回答