【发布时间】:2011-06-21 20:27:07
【问题描述】:
我发现了一些看起来相似但不完全相同的问题,所以我会去。
我正在使用 EF 检索 2 个表。这些表/实体没有真正的“是”关系。他们只是碰巧有几个公共字段,我想在包含两个表之间组合的前 N 个条目的列表中公开这些字段。每行都必须有某种方式来识别它是哪种类型以及它指向哪个实例。
我已经解决了这个问题,但我想我想知道是否有更好的方法。我的解决方案是创建一个 ViewModel 类:
intenal class EntityAEntityBCombination
{
public int? EntityAID { get; set; }
public int? EntityBID { get; set; }
public string CommonProperty { get; set; }
}
然后我这样做了:
var results = (
from a in EntityAList select new EntityAEntityBCombination
{ EntityAID = a.Id, EntityBID = null, CommonProperty = a.CommonProperty }
).Concat(
from b in EntityBList select new EntityAEntityBCombination
{ EntityAID = null, EntitiyBID = b.Id, CommonProperty = b.CommonProperty }
).Fetch(N)
它有效,但看起来很脏。有什么建议吗?
【问题讨论】:
-
可以
EntityA和EntityB不使用相同的接口,然后你返回一个包含它们的List<IEntity>吗?对我来说,这似乎比返回匿名类型更 OOP。 -
我认为接口是要走的路。
标签: c# asp.net-mvc linq entity-framework-4 linq-to-entities