3

MVC.NETでWebサイトを作成しています。

私は最初にデータベースを設計することを学ぶ古い学校のプログラマーなので、データベースファーストのアプローチを選びました。また、拡張子が。のファイルを作成する「コード生成」も使用しています.tt。私を悩ませているものを除いて、これまでのところすべてが機能しています。

古典的なシナリオ:

  • 1つのフィールドが欠落していることに気づきました
  • データベースにフィールドを追加します。
  • edmxに入り、データベースからモデルを更新することを選択します。

次に、コードに戻り、モデルフィールドの上に配置した特別なDisplayNameタグのように機能していたものが削除されました。

たとえば、私がこれを持っている場合:

public partial class Blog
    {
        public Blog()
        {
            this.BlogComments = new HashSet<BlogComment>();
        }

        public int IDBlog { get; set; }
        public string Title { get; set; }

        [AllowHtml]
        public string Content { get; set; }
        public System.DateTime DateCreated { get; set; }
        public string Author { get; set; }

        public virtual ICollection<BlogComment> BlogComments { get; set; }
    }

になります

public partial class Blog
    {
        public Blog()
        {
            this.BlogComments = new HashSet<BlogComment>();
        }

        public int IDBlog { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public System.DateTime DateCreated { get; set; }
        public string Author { get; set; }

        public virtual ICollection<BlogComment> BlogComments { get; set; }
    }

これは[AllowHtml]、前世代のモデルの後に追加されたためです。テーブルを更新し、生成後に追加したすべてのタグを削除しない方法はありますか?どうやってやるの?

現在、私はSVNでいくつかの復帰を行うことでこれを管理していますが、まもなく管理できなくなります。

ありがとう

4

2 に答える 2

12

生成されたファイルを編集しないでください。これまで。ただ。しないでください。行う。これ。

代わりに、別のディレクトリにある部分ファイルを編集してください。属性を追加するには、部分クラス定義の先頭で Metadata クラスを宣言します。

[MetadataType(typeof(BlogMetadata))]
public partial class Blog
{
    // it's possible to add logic and non-mapped properties here
}

Metadata クラスで、属性やその他のロジックを定義できます。

public class BlahMetadata
{
    [AllowHtml] 
    public string Content{ get; set; } 
}
于 2013-03-18T22:27:40.203 に答える
1

いいえ、生成されたコードを編集する方法はなく、再生成時に置き換えられません。そのため、コード全体に NOT TO EDIT IT という警告が表示されます。

ただし、部分クラスを使用して機能を追加することはできます。部分クラスが何であるかわからない場合は、ここでそれについて読んでください。

http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.80).aspx

属性を追加したい場合は、「バディ クラス」と呼ばれる特別な種類の部分クラスを使用する必要があります。

http://hartzer.wordpress.com/2010/01/26/mvc-buddy-class/

于 2013-03-18T22:28:55.687 に答える