非常に単純なドメイン モデルを使用して、個人的な ASP.NET MVC 3 プロジェクトで EF Code First (4.3.1) を使用しています。ほぼ、EF が希望どおりに DB スキーマを生成するところまで来ています。 .
ドメイン モデルには と の 2 つのクラスがPainting
ありGallery
ます。それぞれPainting
が単一の に属し、 にGallery
はGallery
を指す 2 つの仮想プロパティがありますPainting
。1 つはどの絵が表紙画像であるかを示し、もう 1 つはどの絵がホームページに表示される Slider 画像であるかを示します。
クラスは以下の通りです。読みやすくするために、いくつかの注釈と無関係なプロパティを削除しました。
public class Gallery
{
public Gallery()
{
Paintings = new List<Painting>();
}
[ScaffoldColumn(false)]
[Key]
public int GalleryId { get; set; }
public string Name { get; set; }
[ScaffoldColumn(false)]
[Column("LaCover")]
public Painting Cover { get; set; }
[ScaffoldColumn(false)]
[Column("ElSlider")]
public Painting Slider { get; set; }
[ScaffoldColumn(false)]
public virtual List<Painting> Paintings { get; set; }
}
と塗装:
public class Painting
{
[ScaffoldColumn(false)]
[Key]
public int PaintingId { get; set; }
public string Name { get; set; }
public int GalleryId { get; set; }
[Column("GalleryId")]
[ForeignKey("GalleryId")]
[InverseProperty("Paintings")]
public virtual Gallery Gallery { get; set; }
public string Filename { get; set; }
}
クラスとその関係の両方に対して正しい db スキーマを生成します。私が抱えている唯一の小さな問題は、テーブルの仮想プロパティCover
とテーブルSlider
内の仮想プロパティに与える列名を制御する方法が見つからないことGallery
です。
と という名前が付けられCover_PaintingId
ますSlider_PaintingId
。
属性を使用してみまし[Column("columnNameHere")]
たが、まったく影響しません。「関係のない特定の単語を入力しましたが、スキーマに表示されませんでした」のように。
アンダースコアなしで名前を付けたいと思いCoverPaintingId
ます。
どんな助けでも大歓迎です。ありがとう