【问题标题】:Entity Framework database-first doesn't create the correct model实体框架数据库优先不创建正确的模型
【发布时间】:2013-02-10 01:22:45
【问题描述】:

我正在尝试在 EF 5.0 中使用数据库优先方法,但它没有为我创建正确的模型。

这是我的数据结构:

论坛

用户

帖子

关系

问题

主要问题在于ForumsPosts 表中的一对一关系。该模型不会将ParentForumIDReplyTo 识别为可空值,因此会在表(Forum-ForumPost-Post)之间创建一对多关系。

此外,当尝试手动更改为一对一关系时,我收到此错误:

错误 113:多重性在关系“FK_Forums_Forums”中的角色“Forum1”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是*。 ...\Models\Entities\Model1.edmx

Visual Studio 中的模型(编辑前)

我尝试使用代码优先的方法,但它产生的数据库结果很差,然后我意识到我可以配置数据库创建的行为,但我找不到解释如何正确配置它的好资源。

我宁愿使用数据库优先的方法,因为它可以让我自定义我的数据库,但它仍然会生成一个带有许多错误的不正确模型。

所以我的问题是:

  1. 最好的方法是什么?

  2. 哪里可以先学代码,先学数据库?

  3. 为什么我的视觉工作室会产生这样的模型?

  4. 为什么当我尝试更改模型以适应我的需要时,它给了我之前描述的错误?

  5. 在哪里可以了解迁移工具?我可以使用哪些函数来配置数据库创建?

【问题讨论】:

  • 我不明白,父论坛与子论坛不应该是一对多吗?以及父帖子到子帖子?有一个 1 对 1 的家长论坛和孩子论坛有什么意义?

标签: c# entity-framework code-first database-first


【解决方案1】:

问题 1:视情况而定。

如果您已经编写了代码,或者您更喜欢先编写对象,那么请走这条路。

另一方面,如果您更喜欢先创建 DB 架构,那么无论如何都要这样做。

没关系,所以选择最适合你的。

【讨论】:

    【解决方案2】:

    问题 2 - 5:您可以通过多种方式学习这个。有些人更喜欢购买几十本关于 EF with C# Programming 的非常好的书籍中的一本。

    其他人更喜欢学习一个类来引导他们使用整个实体框架技术。我在这样一家公司工作,我们的课程很棒。我不是来推一个培训公司而不是另一个,所以我会提出一个与我的雇主分开的推荐~Plural Sight。它们非常好,您可以找到代码优先 EF 方法培训计划here 的链接。这是一个付费课程。

    我的方法包括四处挖掘尝试不同的模型,以便了解 EF Design Surface 的工作原理。结果,我开始喜欢使用数据库优先的建模方法,和你一样。只要挂在那里,继续使用工具,尝试不同的东西。

    我可能会在有限的基础上为您提供帮助。我不能告诉你为什么 EF 创建了它所做的模型,因为我不知道你做了什么才能做到这一点,现在可以了。如果您需要一些指导,请随时通过 StackOverflow 与我联系。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多