我有两张桌子:
tbl_Orders
id OrderN DateAdd
1 77-65 01.01.2011
2 77-73 24.01.2011
3 77-82 13.01.2011
4 77-86 15.01.2011
5 77-89 11.01.2011
tbl_OrdersList
id OrderId ItemId
1 1 23
2 1 32
3 3 33
4 5 45
5 5 48
tbl_Orders中有订单并在tbl_OrdersList中以此订单购买。 所以,系统中有5个订单:
所以,我使用LINQ2Sql,我希望执行存储过程,而不是由LINQ sql代码生成。
如何编写此存储过程更好?是否有一些usp(首先是Orders,第二个是OrdersList)?
在执行usp之后建立关系会有什么好处(例如,使用生成的类和LINQ生成的代码,我可以做这样的事情:
// Orders - get orders from tbl using dataContext and tbl_Orders
foreach(var order in Orders){
foreach(var orderlist in order.OrdersList) {
}
}
答案 0 :(得分:0)
Linq2Sql是Linq最薄弱的环节。它生成的SQL对于简单的情况来说是不错的,但是当你向代码添加最后的触摸时经常会退化。退化可能是1000倍或更糟。这是一个蜜蜂陷阱:当你的截止日期临近时,它开始很好,然后变成一团糟。
我养成了编写存储过程的习惯。
答案 1 :(得分:-1)
Dim q = From o In Orders, ol In OrdersList _
where o.id Equals ol.OrderId Into ords = Group _
From ol In ords.DefaultIfEmpty _
Select New With {o.OrderN, o.DateAdd,ords.ItemID}