gpt4 book ai didi

linq - 将 LINQ 与每行返回同一实体的多个实例的存储过程一起使用

转载 作者:行者123 更新时间:2023-12-01 06:28:30 25 4
gpt4 key购买 nike

我们的开发政策规定所有数据库访问都通过存储过程进行,这在使用 LINQ 时会产生问题。

为了使解释更容易,下面讨论的场景已经有所简化。

考虑一个有 2 个表的数据库。

  • 订单(OrderID (PK)、InvoiceAddressID (FK)、DeliveryAddressID (FK))
  • 地址(AddresID (PK)、街道、邮政编码)

存储过程返回的结果集必须重命名地址相关的列,以便发票和送货地址彼此不同。

OrderID InvAddrID DelAddrID InvStreet DelStreet InvZipCode DelZipCode
1 27 46 Main St Back St abc123 xyz789

然而,这意味着 LINQ 不知道如何处理结果集中的这些列,因为它们不再匹配地址实体中的属性名称。

令人沮丧的是,似乎没有办法定义哪些结果集列映射到哪些实体属性,即使可以(在某种程度上)将实体属性映射到存储过程参数以用于插入/更新操作。

有没有人遇到同样的问题?

我认为从架构的角度来看,这将是一个相对常见的场景,但存储过程似乎是这里的关键因素。

最佳答案

您是否考虑过为存储过程创建如下所示的 View 以供选择?它会增加复杂性,但允许 LINQ 以您想要的方式查看实体。

Create view OrderAddress as 
Select o.OrderID
,i.AddressID as InvID
,d.AddressID as DelID
...
from Orders o
left join Addresses i
on o.InvAddressID= i.AddressID
left join Addresses d
on o.DelAddressID = i.AddressID

关于linq - 将 LINQ 与每行返回同一实体的多个实例的存储过程一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442585/

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