2013-01-22 24 views
1

以下是我在使用实体框架构建的WCF服务参考中使用的代码。正如你所看到的,现在我一次又一次地使用相同的代码。有没有一种语法可以让我用普通类型或另一种可以减少正在使用的代码量的方法替换实体?使用ASP MVC /实体框架中的通用数据类型进行搜索

 var aI = (from AgentIdentification s in _db.AgentIdentification 
        where s.SymetraNumber == sNum 
        select s); 

     foreach (var record in aI) 
     { 
      _db.AgentIdentification.DeleteObject(record); 
     } 

     _db.SaveChanges(); 

     var aG = (from Agent s in _db.Agent 
        where s.SymetraNumber == sNum 
        select s); 

     foreach (var record in aG) 
     { 
      _db.Agent.DeleteObject(record); 
     } 

     _db.SaveChanges(); 

回答

1

我相信这是你想要的。

PerformChanges<YourDbObject, AgentIdentification>(x => x.AgentIdentification, sNum, _db); 
PerformChanges<YourDbObject, Agent>(x => x.Agent, sNum, _db); 

private void PerformChanges<DbType,TCollection>(Func<DbType,DbSet<TCollection>> FetchDbSetLambda, int sNum, DbType your_db) 
     { 
      var aI = (from s in FetchDbSetLambda(your_db) 
         where s.SymetraNumber == sNum 
         select s); 

      foreach (var record in aI) 
       FetchDbSetLambda(your_db).DeleteObject(record); 
     } 
+0

'FetchDbSetLambda'关键字似乎是导致错误。在鼠标悬停之后,我收到了以下消息:'找不到源类型'TCollection'的查询模式的实现。 '哪里找不到'。 – NealR

+0

我的歉意,我在方法声明中有一些错误。 TCollection的Func <>类型应该在DbSet中(假设我们使用的是EntityFramework)。同样,int参数的名称也是错误的。 –