【发布时间】:2013-11-03 02:34:22
【问题描述】:
一个相对简单的任务...我需要从数据库中提取数据并将其导出到 CSV 文件。问题是数据是从多个连接表中查询的,我不确定使用 EF 获取数据并对其进行序列化的最佳方法是什么。
我的 SQL 查询是:
select o.product, o.invoicenr, o.amount as quantity, o.price, o.shipping, o.vatrate, o.datecreated, os.title as [orderstatus],ps.title as [paymentstatus], pm.title as [paymentmethod], o.datepaid, o.dateinvoice,
c.*, a.*,
oos.trackingcode, oos.courier, oos.datecreated as [orderstatusdate],
p.amout, p.transactionIdentifier, p.comment, p.datecreated as [paymentcreated]
from [order] o
inner join Address a
on o.shipingaddressId = a.id
inner join Customer c
on o.customerId = c.id
inner join OrderOrderStatus oos
inner join OrderStatus os
on oos.orderstatusId = os.id
on o.id = oos.orderID
inner join Payment p
inner join PaymentStatus ps
on p.paymentstatusId = ps.id
inner join PaymentMethod pm
on p.paymentmethodId = pm.id
on o.id = p.orderId
order by o.datecreated, o.id
组合起来,应该返回 44 列。
如何使用 LINQ 复制此查询?一般来说,完成这项任务的最佳方法是什么?
只是为了理解:主表“订单”与地址、客户、订单订单状态和付款表一对多链接。 Table Payment 与 PaymentStatus 和 PaymentMethod 是一对多的关系。表 OrderOrderStatus 与 OrderStatus 是一对多的关系。
谢谢!
【问题讨论】:
-
请显示具有导航属性的类模型。大多数连接可以通过导航属性完成。此外,您尝试过的初稿也会有所帮助。
标签: c# linq entity-framework csv sql-to-linq-conversion