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

我有一个包含许多查找表的数据库表:OrderType ShippingType etc.我的订单表引用了这些表中的每一个:OrderOrderIDOrderTypeIDShippingTypeID我使用实体框架作为我的数据访问层.我有一个页面需要显示订单的信息....

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

OrderType  
ShippingType  
etc.

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

Order
  OrderID
  OrderTypeID
  ShippingTypeID

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

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

订单#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 
            };

这里有什么更好的方法?

解决方法:

你本身不需要加入.您可以使用OrderType和ShippingType的导航属性,以便在不需要连接的情况下访问它们.你会有类似的东西:

var order = from o in db.Orders
            select new OrderView 
            { 
                OrderNumber = o.OrderNumber, 
                ShippingType = o.ShippingType.Description, 
                OrderType = o.OrderType.Description 
            };

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

本文标题为:c# – 实体框架 – Linq to Entities中的数据库视图或连接

基础教程推荐