C# 实体框架数据库优先';不要创建正确的模型

C# 实体框架数据库优先';不要创建正确的模型,c#,entity-framework,code-first,database-first,C#,Entity Framework,Code First,Database First,我试图在EF5.0中使用数据库优先的方法,但它没有为我创建正确的模型 以下是我的数据结构: 论坛 用户 帖子 关系 问题 主要问题在于论坛和帖子表中的一对一关系。该模型不将ParentForumID和ReplyTo识别为可空,因此在表之间创建一对多关系(Forum-Forum和Post) 此外,当尝试手动更改为一对一关系时,我会遇到以下错误: 错误113:多重性在关系“FK_Forums_Forums”中的角色“Forum1”中无效。因为依赖角色属性不是键属性,所以依赖角色的多重性的上限

我试图在EF5.0中使用数据库优先的方法,但它没有为我创建正确的模型

以下是我的数据结构:

论坛

用户

帖子

关系

问题

主要问题在于
论坛
帖子
表中的一对一关系。该模型不将
ParentForumID
ReplyTo
识别为可空,因此在表之间创建一对多关系(
Forum-Forum
Post

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

错误113:多重性在关系“FK_Forums_Forums”中的角色“Forum1”中无效。因为依赖角色属性不是键属性,所以依赖角色的多重性的上限必须是*\模型\实体\模型1.edmx

Visual Studio中的模型(编辑前)

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

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

所以我的问题是:

  • 这样做的最佳方法是什么

  • 我在哪里可以先学习代码,先学习数据库

  • 为什么我的VisualStudio会产生这样一个模型

  • 为什么当我试图改变模型以满足我的需要时,它会给我前面描述的错误

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


  • 问题1:视情况而定

    如果您已经编写了代码,或者您更喜欢先编写对象,那么就这样做

    另一方面,如果您更喜欢先执行DB模式,那么请务必这样做


    问题2-5:你可以通过多种方式学习。一些人更喜欢购买几十本关于EF和C#编程的好书中的一本

    其他人更喜欢使用类来引导他们使用整个实体框架技术。我在一家这样的公司工作,我们有很棒的课程。我来这里不是要把一家培训公司推给另一家,所以我会提出一个与我的雇主无关的建议。他们非常好,你可以找到一个链接到代码优先EF方法培训计划。这是一门付费课程

    我的方法包括尝试不同的模型,以便了解EF设计图面是如何工作的。因此,我开始倾向于使用数据库优先的建模方法,和您一样。只要坚持下去,不停地用工具敲击,尝试不同的东西

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


    祝你好运

    我不明白,家长论坛对孩子论坛不应该是一对多吗?还有从父帖子到子帖子?一对一的家长论坛对孩子论坛有什么意义?