У меня есть два POCO Entity классыВопросы Mapping EF Multiple Однотипные Отношения
public class Model
{
public long Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
// Relationships
public virtual ICollection<Shoot> PhotoSets { get; set; }
public virtual ICollection<Shoot> FilmSets { get; set; }
}
public class Shoot
{
public long Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ShootType { get; set; }
// Relationships
public long ModelId { get; set; }
public virtual Model Model { get; set; }
}
Так что я хочу только одну таблицу с несколькими типами dfined по ICollection навигационных свойств на модели. Если я позволю EF генерировать по соглашению, он создает Model_dId как дополнительное свойство, которое я хочу избежать. В моем Fluent класса отображения ModelConfiguration Я попытался это:
this.HasMany(m => m.FilmSets)
.WithRequired(sh => sh.Model)
.HasForeignKey(sh => sh.ModelId);
this.HasMany(m => m.PhotoSets)
.WithRequired(sh => sh.Model)
.HasForeignKey(sh => sh.ModelId);
и получить Additional information: Schema specified is not valid. Errors: The relationship 'PronHunter.Database.Model_FilmSets' was not loaded because the type 'PronHunter.Database.Shoot' is not available.
Я пытался от ShootConfiguration определения обоих путей с:
this.HasRequired(sh => sh.Model)
.WithMany(m => m.PhotoSets)
.HasForeignKey(sh => sh.ModelId);
this.HasRequired(sh => sh.Model)
.WithMany(m => m.FilmSets)
.HasForeignKey(sh => sh.ModelId);
, который создает базу данных при запросе в первый раз, но он по-прежнему генерирует дополнительный столбец Model_Id. На самом деле я также попробовал переименовать ModelId в ModelaaaId, но потом я столкнулся с тремя столбцами ModelaaaId, ModelId и Model_id, поэтому EF игнорирует мое явное именование в любом случае.
Так что я чувствую, что это много-много сценарий, но я пробовал следовать некоторым примерам, но я не вижу MapLeftColumn в любом intellisense, и в любом случае это не слишком много для многих сценариев. Это два человека, которого я хочу определить, как если бы я определил два внутренних объединения в T-SQL.
Кто-нибудь знает, как я должен это делать?
Ммм, возможно, мне нужна таблица за иерархию. Хотя у меня нет полей, характерных для обоих. Они оба одинаковы, поэтому кажется, что излишний наследует от некоторого базового типа, но не имеет дополнительных свойств. –