我的SellDepartment的一切正常。我可以保存并获取PriceLines但是当我尝试将数据保存到SellEmployee表格时,我得到了外键约束错误:
INSERT语句与FOREIGN KEY约束冲突 “FK9B5C4AB8B12F319A”
我知道我可以通过创建SellBpartment和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>
答案 0 :(得分:0)
您的数据库设计似乎不对,我可以从表/映射文件中注意到的问题是,
Priceline.SellId可以是SellEmployeeId或SellDepartmentId,根据我在这里的信息,我认为这些是主键。
因此,您对Priceline有两个限制,包括SellEmployee和SellDepartment,当您向Priceline插入一行时,约束期望在SellEmployee和SellDepartment中都有一个相关记录,而事实并非如此。这就是它失败的原因。