我在个人 ASP.NET MVC 3 项目上使用 EF Code First (4.3.1),具有非常简单的域模型,并且我几乎处于 EF 将以我想要的方式生成 DB 模式的地步.
域模型有两个类:Painting
和Gallery
。每个都Painting
属于一个Gallery
,并且Gallery
有两个虚拟属性指向Painting
:一个指示哪幅画是它的封面图像,一个指示哪幅画是主页上显示的滑块图像。
课程如下。我删除了一些注释和不相关的属性以使其可读。
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; }
}
它为类及其关系生成正确的数据库模式,我唯一的小问题是我还没有找到一种方法来控制它赋予表Cover
和表Slider
中的虚拟属性的列名Gallery
。
它会将它们命名为Cover_PaintingId
和Slider_PaintingId
。
我尝试使用该[Column("columnNameHere")]
属性,但这根本不影响它。如“我输入了某个不相关的单词,但它没有出现在架构中”。
我想命名它CoverPaintingId
,不带下划线。
任何帮助是极大的赞赏。谢谢