验证EF Code First + Ria Services中的NotMapped属性

时间:2012-01-26 14:02:51

标签: c# .net entity-framework ef-code-first wcf-ria-services

我正在使用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已设置为非空值。

1 个答案:

答案 0 :(得分:1)

好吧,在向属性添加虚拟修改器后,它开始正常工作

[NotMapped]
public virtual string Version
{
    get
    {
        return this.GetProperty(PropertyNameVersionConst) == null
                    ? null
                    : this.GetProperty(PropertyNameVersionConst).StringValue;
    }
    set
    {
        this.SetProperty(PropertyNameVersionConst, value);          
    }
}

任何人都可以详细说明:)?