相关疑难解决方法(0)

通过MetadataType属性获取应用于生成实体的自定义属性

在我们的应用程序中,我们使用EF4.0和POCO实体生成器从数据库生成实体.为了应用数据注释,我们创建接口并在我们创建的部分类上实现这些接口,以匹配使用EF生成的部分类.

/*Entity Generated Type*/
public partial class SomeEntity : EntityBase
{
    public virtual string SomeProperty
    {
        get {...}
        set {...}
    }
}

/*Interface containing metadata*/
public interface ISomeEntityMetadata
{
    [SomeCustomAttribute]
    string SomeProperty { get; set; }
}

/*Partial matching class for interface*/
[MetadataType(typeof(ISomeEntityMetadata))]
public partial class SomeEntity : ISomeEntityMetadata
{
}
Run Code Online (Sandbox Code Playgroud)

现在,使用反射,当我们尝试获取'SomeCntomAttribute'是否应用于'SomeEntity.SomeProperty'时,它返回该属性未应用.

如果我们编辑生成的代码并直接应用属性,它就可以工作.
如果我们检查合并形成单一类型的部分类,它确实如此.
如果我们检查要在类型上应用的MetadataType属性(使用反射),它就是.
此外,当实体绑定到任何WPF的UI元素时,验证工作正常,但使用反射我们无法找到应用于属性的验证属性和/或自定义属性.

任何帮助或指针都会拯救灵魂.

reflection entity-framework-4 metadatatype

6
推荐指数
1
解决办法
1912
查看次数