最初に Entity Framework 4.1 コードを使用しており、2 つのエンティティと、両方のエンティティが継承する 1 つの抽象クラスがあります。
public abstract class Customer
{
public long CustomerId { get; set; }
public string Rating { get; set; }
public int FinancialStatusValue { get; internal set; }
}
public class Organization : Customer
{
public string Name { get; set; }
public string Name2 { get; set; }
public string LegalName { get; set; }
public string OrganizationNumber { get; set; }
public string Vat { get; set; }
public string Duns { get; set; }
public Organization HeadQuarter { get; set; }
public virtual ICollection<Organization> ChildOrganizations { get; set; }
}
私は自分のモデルを次のようにマッピングします:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Customer>().ToTable("Customer");
modelBuilder.Entity<Organization>().ToTable("Organization");
modelBuilder.Entity<Organization>().HasOptional(h => h.HeadQuarter)
.WithMany(c => c.ChildOrganizations)
.HasForeignKey(o => o.ParentId);
}
次に、次を使用して組織をクエリします。
var org = ctx.Customers.OfType<Organization>().Single(c => c.CustomerId == 259033);
ParentId は入力されますが、HeadQuarter と ChildOrganizations は常に null です。
私は何が欠けていますか?