1

好的,假设您有两个表:Order 和 OrderLine,由于某种原因,它们在数据库中没有外键关系(这是一个示例,请使用它)。现在,您想使用 Entity Framework 连接这两个表,并编写如下内容:

        using (var model = new Model())
        {
            var orders =  from order in model.Order
                          join orderline in model.OrderLine on order.Id equals orderline.OrderId into orderlines
                          from ol in orderlines.DefaultIfEmpty()
                          select new {order = order, orderlines = orderlines};

        }

现在,上面将产生订单和订单线,左连接和所有,但它有很多问题:

  1. 简直丑陋
  2. 它返回一个匿名类型
  3. 它返回同一订单的多个实例,我必须在客户端执行 Distinct() 因为 orders.Distinct() 失败。

我正在寻找的是一个解决方案,它是:

  1. 漂亮的
  2. 返回静态众所周知的类型而不是匿名类型(我试图投影查询结果,但我遇到了 OrderLines 的问题)
  3. 在服务器端运行 Distinct

任何人?

4

1 回答 1

3

即使数据库表没有外键关系设置,您也可以像配置实体框架一样配置它们。

将 OrderDetails 导航属性添加到您的 Order 类,然后只查询 Orders。

于 2012-11-21T15:40:03.890 回答