Asp.net mvc ADO.Net EF、SQL和LINQ ViewData
我有以下代码:Asp.net mvc ADO.Net EF、SQL和LINQ ViewData,asp.net-mvc,entity-framework,linq-to-entities,Asp.net Mvc,Entity Framework,Linq To Entities,我有以下代码: ViewData.Model = from m in dataModel.Items where m.Loaned == cust.MembershipID && m.MediaItem1.Type != null
ViewData.Model = from m in dataModel.Items
where m.Loaned == cust.MembershipID
&&
m.MediaItem1.Type != null
select new Temp
{
Rating = m.Library.ItemRating.Rating,
Title = m.MediaItem1.Title
};
及
我使用Temp作为强类型创建了一个视图。这很好地工作,并显示所有的标题和评级,因为它应该
我现在想要实现的是:我还有另一种类型的项目,我也想查询,查询看起来与上面的非常相似,它也会返回标题和评级,但它仍然被归类为不同的“项目”类别。我如何实现这一点,以便它将两个查询都发送到视图-如果这样做有意义的话
谢谢。如果不同类型的项目是EF模型中设置的不同实体,它不是从项目继承的,您可以简单地使用union:
ViewData.Model = (from m in dataModel.Items
where m.Loaned == cust.MembershipID &&
m.MediaItem1.Type != null
select new Temp
{
Rating = m.Library.ItemRating.Rating,
Title = m.MediaItem1.Title
})
.Contact(
from i in dataModel.DifferentItems
where ...
select new Temp
{
...
});
但是,如果您在数据库中对继承进行了建模,您仍然可以查询项,并将获得有关所有派生实体的信息。这是因为我现在可以在一个Viewdata中获取所有项,但是我无法区分哪些项可能是电影,例如,或者哪一个是游戏?我有一个标题和评级的列表。我如何才能识别这两种不同的类型?谢谢。在这种情况下,您必须将specil属性添加到Temp中,并根据加载实体的类型填充它。
ViewData.Model = (from m in dataModel.Items
where m.Loaned == cust.MembershipID &&
m.MediaItem1.Type != null
select new Temp
{
Rating = m.Library.ItemRating.Rating,
Title = m.MediaItem1.Title
})
.Contact(
from i in dataModel.DifferentItems
where ...
select new Temp
{
...
});