我正在使用一个OMS,每个记录最多可存储三个项目数据库中的数据。LINQ正常化数据
以下是包含五个订单项的订单示例。
Order Header
Order Detail
Prod 1
Prod 2
Prod 3
Order Detail
Prod 4
Prod 5
单订单标题记录和两个明细记录。
我的目标是对于详细记录(即每个订单项的一个明细记录)具有一对一的关系。在过去,我使用了一条UNION ALL
SQL语句来提取数据。使用LINQ有没有更好的方法解决这个问题?
下面是我第一次尝试使用LINQ。任何反馈意见,建议或建议将非常感激。对于我读过的内容,UNION
声明可以对流程征税?
var orderdetail =
(from o in context.ORDERSUBHEADs
select new {
edpNo = o.EDPNOS_001, price = o.EXTPRICES_001,
qty = o.ITEMQTYS_001 }
).Union(from o in context.ORDERSUBHEADs
select new { edpNo = o.EDPNOS_002, price = o.EXTPRICES_002,
qty = o.ITEMQTYS_002 }
).Union(from o in context.ORDERSUBHEADs
select new { edpNo = o.EDPNOS_003, price = o.EXTPRICES_003,
qty = o.ITEMQTYS_003 });
“E ..._ 00n”名称是否以该形式修复?如果少于三个,会发生什么? 'null'值? – tzaman 2010-05-10 18:33:24
是的,表格列用_00n固定。模式已从支持数据类型的HPe3000 IMAGE数据库迁移为阵列。项目级别的细节存储在数组中。如果只有一个订单项,则其他两个值的项目ID将为零。这同样适用于价格和数量。没有机会产生空值。这些列的默认值为零或空格。所有这一切背后的原因是为了节省空间。设计师采用订单中最常见的订单项数量并创建订单明细模式。 谢谢, Brennan – 2010-05-10 19:41:51