gpt4 book ai didi

nhibernate - 映射同一类中的两个引用,但引用类具有复合键

转载 作者:行者123 更新时间:2023-12-01 04:09:30 26 4
gpt4 key购买 nike

我有以下数据库表(为了清楚起见,这些表被缩写了):

CREATE TABLE [dbo].[prod_uom](
[prod_id] [dbo].[uid] NOT NULL, --Primary key
[uom_type] [numeric](9, 0) NOT NULL, --Primary Key
)

CREATE TABLE [dbo].[order_line](
[order_line_id] [dbo].[uid] NOT NULL, --Primary key
[prod_id] [dbo].[uid] NOT NULL, --Foreign key
[uom_type_requested] [numeric](9, 0) NOT NULL, --Foreign key
[uom_specified] [numeric](9, 0) NOT NULL --Foreign key
)

我遇到问题的实体如下所示(缩写):
public class OrderLine
{
public virtual Guid OrderLineId { get; private set; }
public virtual ProductUom UomRequested { get; set; }
public virtual ProductUom UomSpecified { get; set; }
}

public class ProductUom
{
public virtual Guid ProductId { get; private set; }
public virtual decimal UomType { get; set; }
}

基本上我有 2 个对 的引用PROD_UOM 我的 table 里面 ORDER_LINE 类(class)。我第一次尝试映射如下:
public OrderLineMap()
{
Table("ORDER_LINE");
Id(x => x.OrderLineId, "ORDER_LINE_ID");

References(x => x.UomSpecified)
.Columns(new string[] { "PROD_ID", "UOM_SPECIFIED" });

References(x => x.UomRequested)
.Columns(new string[] { "PROD_ID", "UOM_TYPE_REQUESTED" });
}

这个映射得到了可怕的错误(PROD_ID 被引用了两次):
System.IndexOutOfRangeException: Invalid index 17 for this SqlParameterCollection with Count=17. 

有没有一种简单的方法来映射这种关系?

最佳答案

我相当确定您不能将同一列映射两次,因此我的建议是将 ORDER_LINE 中的 PROD_ID 列拆分为两个,PROD_ID_SPEC 和 PROD_ID_REQ。

还有一些其他选择,但这是我建议的选择,因为它们可能比那更不优雅。

关于nhibernate - 映射同一类中的两个引用,但引用类具有复合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7167516/

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