Я использую EF Code First (4.3.1 )в личном проекте ASP.NET MVC 3 с очень простой моделью предметной области, и я почти достиг точки, когда EF будет генерировать схему БД таким образом, Я хочу этого.
Модель предметной области имеет два класса: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
без подчеркивания.
Любая помощь приветствуется. Спасибо