Entity framework 首先需要澄清实体框架代码、导航属性和标量键
据我所知,如果我弄错了,请纠正我,在实体类之间有关系的实体类可以通过几种方式定义-1使用属性来表示标量键加上导航属性,或2仅使用导航属性 如果您使用数据注释,我相信您唯一的选择是同时使用标量键和导航属性,而使用fluentapi这两种方法都是可用的 我的问题是采取哪种方法?每种方法的优缺点是什么?这是关于外键和导航属性的两个选择…而不是数据注释与Fluent 在我看来,这归结于这些因素/担忧 同时具有标量属性和导航属性可能会被视为使类陷入混乱。 只有navigation属性需要Includes调用才能访问FK值。我没有查看正在发送的SELECT语句,但我怀疑正在执行联接,并且正在发送回不需要的数据。 拥有scalar属性将不需要Include调用。 正如我在前面的SO问题中所暗示的,导航属性似乎不能用作复合键的一部分,因此将强制包含额外的标量键。如果您必须为一个属性执行此操作,那么在所有类中保持一致是有意义的。 我遗漏了什么吗?通常,定义外键和导航属性的推荐方法是什么?为什么还要提供这两种方法,因为这似乎是在混水摸鱼?我看过很多教程,看到了这两种方法的混合 多谢各位 1使用属性表示标量键加上导航属性,或2仅使用导航属性 这就是两者的区别 如果您使用数据注释,我相信您唯一的选择是同时使用标量键和导航属性,而使用fluentapi这两种方法都是可用的 不。数据注释只是另一个提示。默认情况下,导航属性会自动识别 同时具有标量属性和导航属性可能会被视为使类陷入混乱 是的,但由于两种具有标量属性的关联类型的性质不同,使得一些开发任务更简单 只有navigation属性需要Includes调用才能访问FK值。我没有查看正在发送的SELECT语句,但我怀疑正在执行联接,并且正在发送回不需要的数据 对。Include意味着获取数据,但如果只需要在linq to entities查询中访问FK,则不需要使用它。例如:Entity framework 首先需要澄清实体框架代码、导航属性和标量键,entity-framework,data-annotations,fluent-interface,Entity Framework,Data Annotations,Fluent Interface,据我所知,如果我弄错了,请纠正我,在实体类之间有关系的实体类可以通过几种方式定义-1使用属性来表示标量键加上导航属性,或2仅使用导航属性 如果您使用数据注释,我相信您唯一的选择是同时使用标量键和导航属性,而使用fluentapi这两种方法都是可用的 我的问题是采取哪种方法?每种方法的优缺点是什么?这是关于外键和导航属性的两个选择…而不是数据注释与Fluent 在我看来,这归结于这些因素/担忧 同时具有标量属性和导航属性可能会被视为使类陷入混乱。 只有navigation属性需要Includes调
var children = from c in context.Children
where c.Parent.Id == 123
select c;
此查询通过父级访问FK,并在内部生成联接,但不获取父级
拥有scalar属性将不需要Include调用
否。包含依赖于导航属性,而FK属性本身不创建关联。在我的示例中,在父级或子级中,您必须始终在关系的至少一侧具有导航属性
看起来导航属性不能用作复合键的一部分
对。如果需要复合键,则需要在实体上公开外键
有