entityframework POCO的MetaData类

时间:2012-03-13 05:28:31

标签: asp.net-mvc-3 model-view-controller c#-4.0 entity-framework-4

我正在为POCO对象创建元数据类。我将“CSVColumn”(来自LINQToCSV)属性添加到元数据类。但是当我运行程序时,它找不到它的属性。

所以我用反射测试了它,

Type t = typeof(Case);
PropertyInfo pi = t.GetProperty("ProviderId");  
//bool isReadOnly =  ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
var attributes = pi.GetCustomAttributes(typeof(Case),true);

通过调用“GetCustomAttributes”实际上没有返回任何内容。

我做错了什么?

以下是我创建元数据类的方法。

我不明白的一点是,它与MVC验证完美配合。想知道如何检索自定义属性???

这是entityframework POCO对象

public partial class Case
{
public string ProviderName { get; set; }        
public string ProviderId { get; set; }
}

在这里,我创建了一个Case和元数据类的部分类,

[MetadataType(typeof(CaseMetaData))]
public partial class Case
{
    public class CaseMetaData
    {

        [CsvColumn(Name = "ProviderName", FieldIndex = 1)]
        public string ProviderName { get; set; }

        [CsvColumn(Name = "ProviderID", FieldIndex = 2)]
        public string ProviderId { get; set; }

    }

}

请有人帮助我,非常感谢。

干杯

1 个答案:

答案 0 :(得分:2)

typeof(Case)不是属性类型 你的意思是typeof(CsvColumnAttribute)

此外,标准的Reflection不了解元数据类 您需要使用AssociatedMetadataTypeTypeDescriptionProvider

可以找到一个很好的例子here