非常に単純なドメインモデルを使用して、私は個人的なASP.NET MVC 3プロジェクトでEF Code First(4.3.1)を使用しています。 EFは私が望むようにDBスキーマを生成します。Entity Frameworkコードファースト - 仮想プロパティ列のネーミング
ドメインモデルには、Painting
とGallery
の2つのクラスがあります。各Painting
はGallery
に属し、Gallery
にはPainting
という2つの仮想プロパティがあります.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
の仮想プロパティを示します。
Cover_PaintingId
とSlider_PaintingId
となります。
私は[Column("columnNameHere")]
属性を使用しようとしましたが、それはまったく影響しません。 "私は特定の非関連単語を入力したが、スキーマには表示されませんでした"のように。
アンダースコアなしでCoverPaintingId
としたいと思います。
ご協力いただきまして誠にありがとうございます。ありがとう
私はあまりにもリチャードをしようとしたが、私は次のエラーを受信:テーブル「ギャラリー」に関する 紹介FOREIGN KEY制約「FK_Galleries_Paintings_CoverPaintingId」サイクルまたは複数のカスケードパスを引き起こす可能性があります。 NO DELETE NO ACTIONまたはUP UP NO NO ACTIONを指定するか、他のFOREIGN KEY制約を変更してください。 制約を作成できませんでした。以前のエラーを参照してください。 – GR7
ああ、複数の関係でそれを得るのを忘れてしまった。それを回避する方法を説明する答えを更新しました。 – Richard
Richard。いくつかの進捗状況をありがとう、しかし、今私は、次のエラーが発生しています: 'ap.Models.Gallery'タイプのプロパティ 'カバー'のForeignKeyAttributeが有効ではありません。依存型 'ap.Models.Painting'に外部キー名 'CoverPaintingId'が見つかりませんでした。 Name値は、外部キーのプロパティ名をコンマで区切ったリストでなければなりません。 エラーが、私は絵画のCoverPaintingIdプロパティを作成する必要があると思います理解して言っているから?私はすでに今もう一度試してみてください – GR7