【发布时间】:2018-09-05 12:23:38
【问题描述】:
我正在用Entity Framework 构建一个c# lambda
我有两个具有内部连接关系的表...(Order 和MarketOrder)。 OrderID 是Order Table 上的PK 和MarketOrder Table. 上的FK
恢复我的模型是这样的
public class Order
{
[Key]
public int OrderID { get; set; }
public virtual MarketOrder MarketOrders { get; set; }
}
public class MarketOrder
{
[Key]
public int MarketOrderID { get; set; } // One sequence for all system market orders.
public int OrderID { get; set; }
public virtual Order Order { get; set; }
}
我需要选择连接表中不存在的记录或存在字段MarketOrder.Status is null
我尝过这个
db.Order
.Where(c => !db.MarketOrder
.Select(b => b.OrderID)
.Contains(c.OrderID)
);
当不存在于其他表中时我可以正常工作,但如果它存在于 Status == null 的情况下,我无法使用它。
关系是一对多。在 Order 类中,我有属性
public virtual List<MarketOrder> MarketOrders { get; set; }
var aa =(from order in db.OrderFunds
from marketOrder in order.MarketOrders.DefaultIfEmpty()
where marketOrder.OrderID == null || marketOrder.Status == null).ToList();
效果很好。
当关系为One To One 时,我遇到了问题。在订单类中,我有财产
public virtual MarketOrder MarketOrders { get; set; }
一行
order.MarketOrders.DefaultIfEmpty()
不起作用。 order.MarketOrders 没有方法DefaultIfEmpty()。如果我使用order.MarketOrders.ToString().DefaultIfEmpty() 子句where marketOrder.OrderID 没有属性OrderID
我该如何解决。
谢谢。
【问题讨论】:
-
这与 jQuery 究竟有什么关系?
-
jQuery 是一个 javascript-framework,这个问题似乎与它无关。
-
你可以发布你的模型订单和市场订单
-
尝试左外连接。见 msdn:code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
-
嗨,我添加了模型类。谢谢
标签: c# entity-framework lambda