我使用我的数据库创建了一个EDM,并看到它能够建立像
这样的关系Customers.First().Orders
没有像
那样的东西Customer.First().Orders.FindOrderByOrderID()
Customer.First().Orders.FindOrderByOrderName()
等
也许我期待它就像那样,这就是它无法运作的方式 我可能只需要LINQ to实体并创建处理业务逻辑的管理器。
或LINQ to SQL会这样做吗?
答案 0 :(得分:2)
您可以将LINQ与Orders
属性一起使用,如下所示:
var order = Customer.First().Orders.FirstOrDefault(o => o.OrderId == someId);
如果没有匹配的Order
,则返回null。
答案 1 :(得分:0)
使用LINQ to Entities,您可以执行此操作。比如上面发布的示例SLaks。
如果您喜欢冒险,可以编写一个功能来执行此操作。由于实体框架知道哪个列是主键,因此可以编写像GetEntityByPrimaryKey这样的函数。
CodeProject有article regarding the repository pattern,如果你搜索“SelectByKey”,你会看到它们的实现。我使用类似的东西,发现它非常有帮助。
答案 2 :(得分:0)
这个想法是你可以使用LINQ来编写更灵活的查询。但请注意,通过创建自己的动态类型(非简单),您可能会像.NET 4.0中的FindOrderByOrderName
那样,通过自动构建LINQ查询来响应此模式之后的调用。当然,你失去了智能感知,我怀疑它是否值得,但它可以做到。