将 DataAnnotation 好友类放在另一个程序集中
本文关键字:另一个 程序 程序集 集中 DataAnnotation 好友 | 更新日期: 2023-09-27 18:19:03
我有一个名为Model的项目。我的所有实体都首先位于 EF Code 生成的项目中。
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
属性?
我还发现了这个问题:使用FluentValidation时将DataAnnotation添加到类中,关于使用FluentValidation引擎管理MetaData,但这看起来还有很长的路要走,我更喜欢使用数据注释属性
问题是,我想将我的好友类移动到另一个程序集。
不可能。分部类仅在同一程序集的边界内工作。
我可以使用FluentValidation进行验证部分(效果很好(, 但是其他元数据呢: 显示属性 ?
没什么,他们只是可以留在你的视图模型上。不在您的域模型上。视图模型是您专门为满足视图要求而设计的类。在这些视图模型上,您将使用 [DisplayFormat]
和类似属性。
现在回复为时已晚,但有人可能会从中获得帮助。
我遇到过类似的情况,即在独立程序集中创建现有模型类/实体,这也是在 DotNet 3.5 中。
我不得不重用上述程序集,但这次是在 MVC 5 ASP.Net。为此,我发现模型程序集中的类,如果标记为公共,则可以在MVC项目中继承 ASP.Net 并且可以在那里为数据注释添加好友类。
它工作得很好。