我有一个名为模型的项目。我的所有实体都在 EF代码首先生成的项目中。
Public Partial Class Person
{
...
}
我不想触及生成的类,因此我可以创建部分类并为其添加MetadataType
属性。
[MetadataType(typeof(Person_Metadata))]
public partial class Person
{
}
这是我的好友班。
[Bind(Exclude="PersonID")]
public class Person_Metadata
{
[Display(Name:="First name")]
public string FirstName { get; set; }
[Display(Name:="Last name")]
public string LastName { get; set; }
}
问题是,我想将我的伙伴班级移到另一个议会。
模型项目没有引用,因此[MetadataType(typeof(Person_Metadata))]
会出错,因为它没有引用Person_Metadata
类。
我可以使用 FluentValidation 作为验证部分(效果很好),但是其他元数据如:Display
属性呢?
我还发现了这个问题:Adding DataAnnotation to class when using FluentValidation关于使用FluentValidation引擎管理MetaData,但这看起来还有很长的路要走,我更喜欢使用数据注释属性
答案 0 :(得分:2)
问题是,我想将我的伙伴班级移到另一个议会。
那是不可能的。部分类仅在同一程序集的边界内工作。
我可以使用FluentValidation作为验证部分(并且效果很好), 但是其他元数据如:显示属性?
没什么,他们只能留在你的视图模型。不在你的域名模型上。您的视图模型是您专门设计的类,以满足您的视图要求。在那些视图模型上,您将使用[DisplayFormat]
和类似的属性。
答案 1 :(得分:1)
我知道回复已太晚了,但有人可能会从中得到帮助。
我有类似的情况,现有的Model类/实体是在一个独立的程序集中创建的,也是在DotNet 3.5中。
我必须重新使用上面的程序集,但这次是在ASP.Net MVC 5.为此我发现模型汇编中的类,如果标记为public,可以在ASP.Net MVC项目中继承,那里我们可以为数据注释添加好友类。
它运作得很好......