我正在使用RIA Services和EF Code First来创建一个应用程序,其中实体可以使用自定义属性进行扩展(每个可扩展实体都有一个属性包,它基本上是与Property实体的一对多关系)。
此外,编写了一个代码生成机制,为每个这样的'extended'属性生成'普通'c#属性包装器。由于这一点,整个机制对开发人员来说更加透明
[NotMapped]
public string Version
{
get
{
return this.GetProperty(PropertyNameVersionConst) == null
? null
: this.GetProperty(PropertyNameVersionConst).StringValue;
}
set
{
this.SetProperty(PropertyNameVersionConst, value);
}
}
问题是 - 我可以在此类([NotMapped])属性上使用验证属性吗?乍一看,我认为没有任何理由不应该这样做。
[NotMapped]
[Required]
public string Version{...}
我遇到了一个问题,即对于具有Required属性的属性,抛出验证异常(在SaveChanges()上),即使属性HAS已设置为非空值。
答案 0 :(得分:1)
好吧,在向属性添加虚拟修改器后,它开始正常工作
[NotMapped]
public virtual string Version
{
get
{
return this.GetProperty(PropertyNameVersionConst) == null
? null
: this.GetProperty(PropertyNameVersionConst).StringValue;
}
set
{
this.SetProperty(PropertyNameVersionConst, value);
}
}
任何人都可以详细说明:)?