Код: Выделить всё
FruitBox
[*]
Код: Выделить всё
Fruitbox
Что мне нужно, чтобы реализовать следующее отображение:
- Таблица (
Код: Выделить всё
FruitBox
) в бананабокс сущность, с бананом ChildКод: Выделить всё
Discriminator = "Banana"
- Таблица (
Код: Выделить всё
FruitBox
) в cherrybox сущность, с вишневой childКод: Выделить всё
Discriminator = "Cherry"
Код: Выделить всё
[Table("FruitBox")]
public abstract class FruitBox
{
[Key]
public Guid FruitBoxId { get; set; }
///
/// Discriminator can be "Banana" or "Cherry"
///
public string Discriminator { get; set; }
///
/// FK to the "Banana" or "Cherry" child, depending on Discriminator
///
public Guid FruitId { get; set; }
}
public class BananaBox : FruitBox
{
public Banana MyBanana { get; set; }
}
public class CherryBox : FruitBox
{
public Cherry MyCherry { get; set; }
}
[Table("Banana")]
public class Banana
{
[Key]
public Guid BananaId { get; set; }
public ICollection MyBananaBoxes { get; set; }
}
[Table("Cherry")]
public class Cherry
{
[Key]
public Guid CherryId { get; set; }
public ICollection MyCherryBoxes { get; set; }
}
< /code>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Map(m => m.Requires("Discriminator").HasValue("Banana"))
.Map(m => m.Requires("Discriminator").HasValue("Cherry"))
modelBuilder.Entity()
.HasRequired(bb => bb.MyBanana)
.WithMany(b => b.MyBananaBoxes)
.HasForeignKey(bb => bb.FruitId);
modelBuilder.Entity()
.HasRequired(cb => cb.MyCherry)
.WithMany(c => c.MyCherryBoxes)
.HasForeignKey(cb => cb.FruitId);
}
< /code>
К сожалению, при попытке прочитать < /p>
var boxes = this.DbContext.BananaBoxes.ToList()
< /code>
Следующее исключение добавлено: < /p>
system.invalidoperationexception: «Компонент иностранного ключа 'FruitId' не является объявленным свойством на типе 'bananabox'. Убедитесь, что он не был явно исключен из модели и что это действительное примитивное свойство. '
Я попытался переместить свойство FruitId
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-the-pare