实体框架 - Linq to Entities中的数据库视图或连接

Dis*_*ile 4 c# entity-framework entity-framework-4

我有一个包含许多查找表的数据库表:

OrderType  
ShippingType  
etc.
Run Code Online (Sandbox Code Playgroud)

我的订单表引用了这些表中的每一个:

Order
  OrderID
  OrderTypeID
  ShippingTypeID
Run Code Online (Sandbox Code Playgroud)

我使用实体框架作为我的数据访问层.我有一个页面需要显示订单的信息.我正在努力找出使用这些实体的最佳/正确方法.

我的页面应该显示如下数据:

订单#1000000
发货类型:UPS
订单类型:在线
等类型:等.

最好在数据库中创建一个视图,它带回我需要的数据,然后将其添加到我的实体模型中,并直接使用它,这样我就不必在查询中编写连接了吗?或者更好的是创建一个这样的中间类:

class OrderView
{
    public int OrderNumber { get; set; }
    public string OrderType { get; set; }
    public string ShippingType { get; set; }
}

var order = from o in db.Orders
            join ot in db.OrderTypes on o.OrderTypeID equals ot.OrderTypeID
            join st in db.ShippingTypes on o.ShippingTypeID equals st.ShippingTypeID
            select new OrderView 
            { 
                OrderNumber = o.OrderNumber, 
                ShippingType = st.Description, 
                OrderType = ot.Description 
            };
Run Code Online (Sandbox Code Playgroud)

这里有什么更好的方法?

Cra*_*ntz 5

你不需要join,本身.你可以做的是使用Navigation PropertiesOrderTypeShippingType以访问它们不用于连接的需要.你会有类似的东西:

var order = from o in db.Orders
            select new OrderView 
            { 
                OrderNumber = o.OrderNumber, 
                ShippingType = o.ShippingType.Description, 
                OrderType = o.OrderType.Description 
            };
Run Code Online (Sandbox Code Playgroud)

我认为在视图中这样做没有任何好处.