gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:03:37 26 4
gpt4 key购买 nike

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

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

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

现在回答我的问题

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

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

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

最佳答案

  • Why are they all the generated .cs files nested in a sealed .tt collection?

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

  • Why can't i copy paste them out to any folder i like, and treat them like normal classes?

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

  • Is it just me, or are you unable to use migrations "update-database" when you do it like that?

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

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

关于c# - 生成 DbContext 后如何修改数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11336175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com