Joh*_*ibb 2 poco entity-framework-4 data-annotations entity-framework-4.1 asp.net-mvc-3
我正在使用新的EntityFramework 4.1和POCO对象,以及DataAnnotation框架.
当EntityFramework需要创建代理类(例如,延迟加载虚拟属性)时,我的所有数据注释都将丢失.有没有办法让我的ModelMetaData可以来自代理的类,而不是代理类?
我知道我可以选择禁用代理创建(context.Configuration.ProxyCreationEnabled),但这似乎是一个糟糕的答案.我想,这应该是已经解决的问题.
这是一些示例代码:
public class Person
{
[Required, Display(Name = "Display That Name")]
public string DisplayName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中的模型元数据中,类型为:Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1 (FullName = "System.Data.Entity.DynamicProxies.Person_9C92B92D56F6F4F0FB1686526D585438A05323CC72E457C2152796E8866297E1"}),我的元数据消失了,显示名称在"DisplayName"处呈现,而不是"显示该名称".
有什么建议?
您可以创建模型类的元数据版本.我们这样做...... EF产生的东西永远不会被手触摸.
假设你有一个Person类:
public partial class Person
{
public int idPerson { get; set; }
public int idTenant { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以创建元数据类,它保存元数据并且不会被覆盖:
[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; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |