1

我来自 Java,现在正在使用 C# 和实体框架将现有系统实现到数据库中。

由于我无法在此处显示实际的类,因此我尝试制作一个与我的问题相同的示例,如下所示。我有一个Company其中有几个属性列表Person。当我使用 EF 将其转换为数据库时,我为每个Person.

Company
   public GUID CompanyID {get,set}
   public List<Person> Employee{get,set}
   public List<Person> Janitors {get,set}
   public List<Person> Students {get,set}
   public List<Person> Professors {get,set}    

Person
   public GUID CompanyID {get,set}

我希望 Person 的数据库方案是

|Column 1 | Column 2 | Column 3 | Company_FK |
----------------------------------------------

但现在更像这样

| Column 1 | Column 2 | Column 3 | Company_ID  | Company_ID1 | Company_ID2 ...
--------------------------------------------------------------------------
                                     null          reference      null
                                     null          reference      null
                                    reference         null        null
               ~~~~~~~~~~~~~~~~~~~~~~etc~~~~~~~~~~~~~~~~~~

所有这些 Company_ID* 列都引用了同一个 Company 表,因此我相信只有一个列用于此引用,然后松开所有这些null引用并非不可能。

我需要 Fluent API 的解决方案,而不是 Data Annotation。

4

1 回答 1

1

用你的公司配置试试这个:

HasMany(x => x.Employee).WithRequired().HasForeignKey(x => x.CompanyID);
HasMany(x => x.Janitors).WithRequired().HasForeignKey(x => x.CompanyID);
HasMany(x => x.Students).WithRequired().HasForeignKey(x => x.CompanyID);
HasMany(x => x.Professors).WithRequired().HasForeignKey(x => x.CompanyID);
于 2013-02-21T11:42:59.160 回答