0

我有一个名为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属性?

我还发现了这个问题:Adding DataAnnotation to class when using FluentValidation aboutmanagement MetaData with FluentValidation engine,但这看起来还有很长的路要走,我更喜欢使用数据注释属性

4

2 回答 2

2

问题是,我想把我的伙伴班搬到另一个大会上。

这不可能。部分类仅在同一程序集的边界内工作。

我可以将 FluentValidation 用于验证部分(并且效果很好),但是其他元数据呢?例如:显示属性?

没什么,他们只是可以留在你的视图模型上。不在您的域模型上。您的视图模型是您为满足视图要求而专门设计的类。您将在那些视图模型上使用[DisplayFormat]和类似的属性。

于 2013-06-19T08:45:43.383 回答
2

我知道现在回复为时已晚,但有人可能会从中得到帮助。

我有类似的情况,现有模型类/实体是在独立程序集中创建的,这也在 DotNet 3.5 中。

我不得不重用上面的程序集,但这次是在 ASP.Net MVC 5 中。为此,我发现模型程序集中的类,如果标记为公共,可以在 ASP.Net MVC 项目中继承,我们可以在那里添加好友数据注释类。

它工作得很好......

于 2016-05-20T09:45:59.747 回答