我将新的 EntityFramework 4.1 与 POCO 对象结合使用,并与 DataAnnotation 框架结合使用。
当EntityFramework需要创建一个代理类(比如懒加载虚拟属性)的时候,我所有的数据注解都丢失了。有什么方法可以让我的 ModelMetaData 来自被代理的类,而不是代理类?
我知道我可以选择禁用代理创建 (context.Configuration.ProxyCreationEnabled
) 但这似乎是一个糟糕的答案。我认为这应该已经解决了。
下面是一些示例代码:
public class Person
{
[Required, Display(Name = "Display That Name")]
public string DisplayName { get; set; }
}
And then in my model metadata in the view, the type is: Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1 (FullName = "System.Data.Entity.DynamicProxies.Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1"})
, my metadata is gone, and the displayname在“DisplayName”而不是“Display That Name”处呈现。
有什么建议吗?
最佳答案
您可以制作模型类的元数据版本。 我们这样做...... EF 生成的东西从来没有用手触摸过。
假设你有一个 Person 类:
public partial class Person
{
public int idPerson { get; set; }
public int idTenant { get; set; }
public string Name { get; set; }
}
然后你可以制作元数据类,它保存元数据并且不会被覆盖:
[MetadataType(typeof(PersonMD))]
public partial class Person
{
//leave it empty
}
public partial class PersonMD
{
[Required]
public int idPerson { get; set; }
[Required]
public int idTenant { get; set; }
[Required, Display(Name = "Display That Name")]
public string Name { get; set; }
}
关于asp.net-mvc-3 - 使用 POCO Entity Framework 4 时丢失 DataAnnotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8125629/