从分部类挂接到get方法时未加载EF导航属性
本文关键字:加载 EF 属性 导航 方法 get | 更新日期: 2023-09-27 18:05:36
我将实体框架与asp.net mvc应用程序结合使用,并使用数据库优先的方法。我从edmx定制了一点代码生成,以便能够挂接到我的实体属性的get方法中,如下所示:
public partial class CA
{
private string _PropX;
partial void OnGetPropX(ref string value);
public string PropX
{
get
{
string value= _PropX;
this.OnGetPropX(ref value);
return value;
}
set
{
this._PropX= value;
}
}
public virtual CB B { get; set; }
}
正如您所看到的,CB还有一个导航属性。在我的非生成部分类A中,我挂接到PropX的get方法,以返回CB上的一个属性,如下所示:
public partial class CA
{
partial void OnGetPropX(ref string value)
{
if(String.IsNullOrEmpty(value))
value= this.B.PropY; // Error
}
}
但事实证明是这样的。在标有//错误的行中,B始终为Null。然而,如果我在未生成的部分类CA中创建一个新属性,如下面所示,一切都很好:
public string MyPropX
{
get
{
return (String.IsNullOrEmpty(this.PropX) ? this.B.PropY: this.PropX);
}
}
有人能向我解释一下这种行为吗?也许可以告诉我如何让第一种方法发挥作用?谢谢
随机猜测。。。但也许将您的属性更改为非虚拟会阻止EF正确创建代理。。。尝试执行public virtual string PropX
。。。