2010-10-18 77 views
1

我有一个基于我的实体框架中的表动态生成的Web服务器控件。现在正在做出一个具有不同数据集的结构相同的表格的决定,我需要一些方法来动态地将我的控件重新指派给另一个表格。 (我已经让我的情况保持一张桌子,只是添加一个国旗,所以不要让thatroad请)对两个相同的表使用相同的实体类?

我可以做到这一点使用LINQ实体,通过添加新的表到我的实体模型,只是有条件地查询模型中的一个或另一个表。问题是查询返回的结果将是两个不同实体类的集合。这对处理这些集合的所有代码都有问题,因为它将不得不被修改并且可能被复制来完成这个工作。

因此,如果我可以以某种方式映射linq查询的结果,以便无论我查询哪个表,结果都是相同的类类型,那么它将最小化对其余代码的影响。我如何完成像下面这样两个不同的表可以物化为同一类类型的列表?

请注意,我使用.NET 3.5

var formFooQuery; 
if(mode1 == true) 
{ 
     formFooQuery = from r in EntitiesContext.Foo1Set.Include("Foo1Data") 
           where r.FooId == fooId 
           select r; 
} 
else 
{ 
     formFooQuery = from r in EntitiesContext.Foo2Set.Include("Foo2Data") 
           where r.FooId == fooId 
           select r; 
} 
List<Foo> foos = formFooQuery.ToList<Foo>(); 

回答

1

你可以在实体框架做到这一点通过利用POCO Support

+0

+1我认为这将是一个很好的解决方案,一旦他们使用4.0,但我现在正在使用3.5。 – AaronLS 2010-10-18 16:45:11

+0

@AaronLS:你可以尝试使用这个:http://code.msdn.microsoft.com/EFPocoAdapter – 2010-10-18 16:54:14

1
if(mode1 == true)  
{  
     formFooQuery = from r in EntitiesContext.Foo1Set.Include("Foo1Data")  
           where r.FooId == fooId  
           select new FooViewModel { FooId = r.FooId, FooName = r.FooName };  
}  
else  
{  
     formFooQuery = from r in EntitiesContext.Foo2Set.Include("Foo2Data")  
           where r.FooId == fooId  
           select new FooViewModel { FooId = r.FooId, FooName = r.FooName };  
}  
List<FooViewModel> foos = formFooQuery.ToList<FooViewModel>();  
相关问题