3

VS2012 で MVC4 を開始しています。また、クラスを作成する「データベース ファースト」方式で EF5 を使用しています。

ただし、生成されたメガネは再生成できるため、データ注釈の詳細を検証に役立てることはできません。

MetaData と部分クラスを使用するいくつかのコード スニペットを見てきましたが、さまざまなクラスがどのように相互リンクするかをよりよく理解するために、私が調べて分解できる小さなコンパイル可能な例を誰かが知っているかどうか疑問に思っていました。

助けてくれてありがとう。デイブ

4

1 に答える 1

4

モデルを拡張することで、必要なことを実現できます。EF が次のエンティティ クラスを生成したとします。

namespace YourSolution
{
    using System;
    using System.Collections.Generic;

    public partial class News
    {
        public int ID { get; set; }
        public string Title { get; set; }                  
        public int UserID { get; set; }

        public virtual UserProfile User{ get; set; }
    }
}

また、データの注釈と属性を保持するためにいくつかの回避策を実行する必要があります。したがって、次の手順に従います。

最初に、次のように 2 つのクラスをどこかに (好きな場所に) 追加Modelsします。

namespace YourSolution
{
    [MetadataType(typeof(NewsAttribs))]
    public partial class News
    {
         // leave it empty.
    }

    public class NewsAttribs
    {            
        // Your attribs will come here.
    }
}

次に、必要なプロパティと属性を 2 番目のクラスに追加します (NewsAttribsここ)。:

public class NewsAttrib
{
    [Display(Name = "News title")]
    [Required(ErrorMessage = "Please enter the news title.")]
    public string Title { get; set; }

    // and other properties you want...
}

ノート:

1) 生成されたエンティティークラスとあなたのクラスの名前空間は同じでなければなりません- here YourSolution.

2) 最初のクラスは である必要partialあり、その名前はEF 生成クラスと同じでなければなりません。

これを通過すると、属性が失われることはありません...

于 2013-07-25T09:48:55.550 に答える