0

Modelというプロジェクトがあります。私のエンティティはすべて、最初に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を使用できます(そしてそれはうまく機能します) が、次のような他のメタデータはどうですか: DisplayAttribute ?

この質問も見つけました: FluentValidationエンジンでメタデータを管理することについてFluentValidationを使用するときにクラスにDataAnnotationを追加しますが、それは長い道のりのように見え、データ注釈属性を使用することを好みます

4

2 に答える 2

2

返信するには遅すぎることはわかっていますが、誰かがそれから助けを得るかもしれません.

既存のモデル クラス/エンティティが独立したアセンブリで作成され、それも DotNet 3.5 で作成された同様の状況がありました。

上記のアセンブリを再利用する必要がありましたが、今回は ASP.Net MVC 5 です。そのために、モデル アセンブリのクラスがパブリックとしてマークされている場合、ASP.Net MVC プロジェクトで継承でき、そこにバディを追加できることがわかりました。データ注釈用のクラス。

それは完全に機能しました....

于 2016-05-20T09:45:59.747 に答える
2

問題は、バディ クラスを別のアセンブリに移動したいということです。

それ無理。部分クラスは、同じアセンブリの境界内でのみ機能します。

検証部分に FluentValidation を使用できます (そしてうまく機能します) が、次のような他のメタデータについてはどうですか: Display Attribute ?

何もありません。ビュー モデルにとどまることができます。ドメインモデルではありません。ビュー モデルは、ビューの要件を満たすために特別に設計したクラスです。[DisplayFormat]および同様の属性を使用するのは、これらのビュー モデルです。

于 2013-06-19T08:45:43.383 に答える