实体框架数据库优先不创建正确的模型

时间:2013-02-10 01:22:46

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

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

这是我的数据结构:

论坛

Forums

用户

Users

帖子

Posts

关系 Relationships

问题

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

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

  

错误113:在关系'FK_Forums_Forums'中,角色'Forum1'中的多重性无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为*。 ... \模型\实体\ Model1.edmx

Visual Studio中的模型(编辑前)

The model

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

我宁愿使用数据库优先方法,因为它允许我自定义我的数据库,但它仍会生成一个错误的模型,但有很多错误。

所以我的问题是:

  1. 这样做的最佳方法是什么?

  2. 我在哪里可以先学习代码,先把数据库彻底学习?

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

  4. 为什么当我尝试更改模型以满足我的需要时,它会给我前面描述的错误?

  5. 我在哪里可以了解迁移工具?我可以用来配置数据库创建的功能吗?

2 个答案:

答案 0 :(得分:0)

问题1:这取决于。

如果您已编写代码,或者您希望首先编写对象,则转到该路径。

如果另一方面,您更喜欢首先执行数据库架构,然后通过所有方式执行此操作。

重要的不是,所以选择最适合你的方式。

答案 1 :(得分:0)

问题2 - 5:您可以通过多种方式了解这一点。有些人喜欢购买EF上的几十本非常好的书中的一本,可以使用C#编程。

其他人更喜欢在整个Entity Framework技术上引导他们使用它们。我为一家这样的公司工作,我们有很棒的课程。我不是要把一家培训公司推到另一家培训公司,所以我会提出一个与我的雇主分开的建议~Polyral Sight。它们非常好,您可以找到代码优先EF方法培训计划here的链接。这是付费课程。

我的方法包括尝试不同的模型,以便了解EF Design Surface的工作原理。因此,我开始更喜欢DataBase第一种建模方法,与您一样。只需挂在那里,不断敲打工具,尝试不同的东西。

我或许可以在有限的基础上为您提供帮助。我无法告诉你为什么EF创造了它所做的模型,因为我不知道你做了什么来实现这一目标,现在可以。如果你需要一点指导,请随时通过StackOverflow与我联系。

祝你好运!