在设置属性值而不是属性设置器时,有没有办法让EF使用支持字段?
我问的原因是,在setter中,每次从数据库返回一个对象时,我都不希望被调用。
例如:
class SomeClass
{
int _prop;
public Prop
{
get { return _prop;}
set
{
CustomValidation(value);
_prop = value;
}
}
}
在上面的示例中,在设置值时调用CustomValidation()。从db返回对象时无需调用此验证,因为这些对象在创建/验证时已经过验证。
答案 0 :(得分:1)
不,目前您无法将列直接映射到字段。它已在去年讨论过,但我不确定这是否会成为未来版本的一部分。请查看此article以获取进一步说明。这是设计的代码摘录。
modelBuilder .Entity<Blog>() .Property(b => b.Title) .UseBackingField("_theTitle");
解决方法是创建域对象或添加将在前端用于创建或验证的未映射属性。
public int Prop { get; set; }
[NotMapped]
public int ValidatedProp // bind to this property in the front end
{
get { return Prop; }
set
{
CustomValidation(value);
Prop = value;
}
}