gpt4 book ai didi

c# - NHibernate 两列同时作为复合键和外键

转载 作者:行者123 更新时间:2023-11-30 15:06:18 25 4
gpt4 key购买 nike

首先,我在网上和这里进行了彻底的搜索,但没有找到手头任务的明确解决方案。如果我的搜索不够准确并且这个答案已经发布,我深表歉意。

问题:我有一张 table 。这个表必须在两个字段上有一个主键,而其他字段包含一些数据。作为主键的两个字段也必须是外键,每个字段都在不同的表上。类似的东西(前面的伪代码):

Product: Id (pk)
Category: Id (pk)

ProductCategory: (ProductId (fk on product), CategoryId (fk on category))(pk), SomeOtherField1, SomeOtherField2, etc

现在我找不到如何使用 Fluent Nhibernate 配置它。虽然这个任务在 EF Code First 上是微不足道的,但在这个项目中我被困在 Net 3.5 上并且无法使用它,所以 NHibernate 是唯一的选择。

我尝试使用 CompositeId()、References() 和其他东西,尝试了各种组合,但都没有奏效。我不认为我得到的错误是相关的,我只需要一个示例工作配置来处理这样的场景。

有人知道如何使用 Fluent Nhibernate(无 xml 配置)来映射它吗?

最佳答案

如果您的 ProductCategory 实体中有实际的 ProductCategory 实体,那么您的映射应该看起来像这样(这里的关键是 KeyReference 不是 KeyProperty):

CompositeId()
.KeyReference(x => x.Product, "ProductId")
.KeyReference(x => x.Category, "CategoryId");

Map(x => x.SomeOtherField1);

如果您的 ProductCategory 中只有 ID,它看起来像这样:

CompositeId()
.KeyProperty(x => x.ProductId, "ProductId")
.KeyProperty(x => x.CategoryId, "CategoryId");

Map(x => x.SomeOtherField1);

第一个代码示例中的 KeyReferences 表示外键关系。

关于c# - NHibernate 两列同时作为复合键和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com