7

通信する既存の大きなデータベースがあり、最初に EF 5.0 データベースを使用しています。問題は[stringlength(50)]、クラスのようにデータ装飾を作成してからデータベースをアップロードすると、「アップロードデータベースから」というメッセージが表示され、すべてのデータ注釈がなくなりました。それらを維持するにはどうすればよいですか?

4

2 に答える 2

12

それは非常に簡単です:あなたはできません! これらのコードは自動生成され、モデルの更新または変更のたびに上書きされるためです。

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

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

    public partial class News
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public string Description { 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-20T12:34:27.197 に答える