C# EF中一对多的最佳方法
我想问你们,这两种方法有什么不同 情景1C# EF中一对多的最佳方法,c#,entity-framework,one-to-many,C#,Entity Framework,One To Many,我想问你们,这两种方法有什么不同 情景1 公共类Foo { 公共int FooId{get;set;} 公共虚拟条{get;set;} } 公共类酒吧 { 公共int BarId{get;set;} } 场景2 公共类Foo { 公共int FooId{get;set;} 公共int BarId{get;set;} 公共虚拟条{get;set;} } 公共类酒吧 { 公共int BarId{get;set;} 公共虚拟ICollection Foos{get;set;} } 在这两种情况下,
公共类Foo
{
公共int FooId{get;set;}
公共虚拟条{get;set;}
}
公共类酒吧
{
公共int BarId{get;set;}
}
场景2
公共类Foo
{
公共int FooId{get;set;}
公共int BarId{get;set;}
公共虚拟条{get;set;}
}
公共类酒吧
{
公共int BarId{get;set;}
公共虚拟ICollection Foos{get;set;}
}
在这两种情况下,EF将生成具有适当列和外键的表。那么,这是一种情况比另一种情况好吗
对不起我的英语,谢谢你的帮助:)没有好坏之分 在这两种情况下,首先从代码中扣除的EDM模型非常相似(可能相等) 但是有一个非常重要的区别:在第二种情况下,您可以访问第一种情况中缺少的一些内容:
Foo中的
BarId
Bar中的
Foos
因此,唯一的问题是:您是否需要从
栏
访问Foos
?您是否需要访问Foo
中的BarId
?这是唯一真正的区别。什么意义上的“区别”?您在第二个场景中添加了virtual
,这肯定是一个区别,但可能不是您所问的区别#1将无法使用public Bar{get;set;}
和没有public int BarId{get;set;}
哦,是的,我应该先检查一下。但这在第一个场景中是有效的,没有公共int-BarId{get;set;}的情况下,这里有一些关于外键的背景知识,为什么实体框架会将现有对象重新插入到我的数据库中?不用外键就可以了谢谢你JotaBe!我只是想确保这是同样的工作方式。