У меня есть следующая модель:
public class Order
{
public int Id { get; set; }
public ItemType ItemType { get; set; }
public int ItemId { get; set; }
}
public enum ItemType
{
Customer, Organization, Department, //etc
}
ItemId
- это чужой ключ к отдельной модели / таблице. Приведенная выше модель сопоставляется как есть с базовой таблицей.
Теперь я хотел бы автоматически загружать связанные объекты при загрузке Order
.
. Возможно ли это при использовании составных внешних ключей при сопоставлении, например:
public class Order
{
public int Id { get; set; }
public ItemType ItemType { get; set; }
public int ItemId { get; set; }
public ItemTypeCustomer => ItemType.Customer;
public ItemTypeOrganization => ItemType.Organization;
public ItemTypeDeparment => ItemType.Department;
public Customer Customer { get; set; }
public Organization Organization { get; set; }
public Department Department { get; set; }
}
modelBuilder.Entity<Order>()
.HasOptional(p => p.Customer)
.WithMany()
.HasForeignKey(p => new { p.ItemTypeCustomer , p.ItemId });
Будет ли работать выше? Можно ли построить что-то подобное, используя сначала код?