C# nHibernate:在多个多对一映射中使用一个选项卡

C# nHibernate:在多个多对一映射中使用一个选项卡,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我的销售部一切正常。我可以保存并获取价格线,但当我尝试将数据保存到SellEmployee选项卡时,出现外键约束错误: INSERT语句与外键约束冲突 “FK9B5C4AB8B12F319A” 我知道我可以通过创建一个SellDepartment和SellEmployee继承的SellBase类来解决这个问题,但我真的不希望数据库中有一个额外的选项卡 我的问题是,我能用映射文件解决这个问题吗?如果是,我做错了什么 我有一个包含不同其他选项卡行的选项卡: **PriceLines tabel**

我的销售部一切正常。我可以保存并获取价格线,但当我尝试将数据保存到SellEmployee选项卡时,出现外键约束错误:

INSERT语句与外键约束冲突 “FK9B5C4AB8B12F319A”

我知道我可以通过创建一个SellDepartment和SellEmployee继承的SellBase类来解决这个问题,但我真的不希望数据库中有一个额外的选项卡

我的问题是,我能用映射文件解决这个问题吗?如果是,我做错了什么

我有一个包含不同其他选项卡行的选项卡:

**PriceLines tabel**
PriceLineId
Price
Type
SellId

**SellDepartment tabel**
SellDepartmentId
Reason
DepartmentId

**SellEmployee tabel**
SellEmployeeId
Reason
EmployeeId
PriceLines的nHibernate映射文件具有以下多对一映射:

<subclass name="Source1Line" discriminator-value="DepartmentLine" extends="PriceLines">
  <many-to-one name="Source1" column="SourceId" class="Source1" />
</subclass>

<subclass name="Source2Line" discriminator-value="EmployeeLine" extends="PriceLines">
  <many-to-one name="Source2" column="SourceId" class="Source2"  />
</subclass>

以及我的SellDepartment和SellEmployee的映射文件:

<set name="PriceLines" cascade="all-delete-orphan" inverse="true">
  <key column="SellId"/>
  <one-to-many class="DepartmentLine"/>
</set>

<set name="PriceLines" cascade="all-delete-orphan" inverse="true">
  <key column="SellId"/>
  <one-to-many class="EmployeeLine"/>
</set>

您的数据库设计似乎不正确,我从表/映射文件中注意到的问题是

Priceline.SellId可以是SellEmployeeId或SellDepartmentId,根据我这里的信息,我假设这些是主键

因此,您对SellEmployee和SellDepartment的Priceline有两个约束,当您向Priceline插入一行时,这些约束预期在SellEmployee和SellDepartment中都有一个相关记录,但事实并非如此。这就是它失败的原因

请注意:也许这只是我和我的问题,但你上面的简化定义并不清楚。虽然我想帮忙,但我不知道这是怎么回事。。。