为什么我们在声明导航属性时需要使用"virtual"关键字?我知道Code First框架会以某种方式使用它来识别该属性为导航属性,但我想知道它是如何实现的。具体而言,我想知道它与MSDN文档中"virtual"关键字的描述有何关联:http://msdn.microsoft.com/en-us/library/9fkccyh4(v=vs.80).aspx
EntityObject
。添加 virtual
允许 EF 生成一个派生类,该类覆盖属性并从数据库返回一个集合。
public class A { public virtual string Foo { get; set; }
public class B : A { public override string Foo { get; set; }
。即使在这种情况下,你提出的操作((A)bar).Foo
也会返回B.bar
,因为它返回最具体的属性。 - Mike Bailey