有没有办法将ObjectSet <table1>强制转换为ObjectSet <entityobject>?</entityobject> </table1>

时间:2010-08-02 07:24:20

标签: c# entity-framework

我正在尝试缩短代码。原始代码执行以下操作:

using (var context = new DataEntities())
{
context.Table1.Foreach(x =>{
    // Omit ... updating UI
    DoSomething(x);
    // Omit ... updating UI                    
});

context.Table2.Foreach(x =>
{
    // Omit ... updating UI
    DoSomething(x);
    // Omit ... updating UI                    
});

context.Table3.Foreach(x =>
{
    // Omit ... updating UI
    DoSomething(x);
    // Omit ... updating UI                    
});
// continue...
}

如你所见,这里有很多类似的代码。所以,我认为我应该重构它,这对我来说很难,因为我无法将context.Table1转换为任何东西,例如,将context.Table1强制转换为ObjectSet<EntityObject>以实现执行所有相同操作的方法对于表格。

我只是想将类似的代码放入方法中,有没有人有个好主意?

提前致谢,

2 个答案:

答案 0 :(得分:3)

泛型?

private void DoSomethingWithAnyTable<T>(ObjectSet<T> table) where T : EntityObject
{
    table.Foreach(x =>{ 
        // Omit ... updating UI 
        DoSomething(x); 
        // Omit ... updating UI                     
    });
}

然后

DoSomethingWithAnyTable(context.Table1);
DoSomethingWithAnyTable(context.Table2);
DoSomethingWithAnyTable(context.Table3);

答案 1 :(得分:2)

您应该可以使用.Cast<SomeCommonType>来获取IEnumerable<T>个帖子吗?假设的共性。

否则;也许只是IEnumerable? (非通用)