2010-11-16 39 views
3

我已实现了以下泛型方法:如何使用更新方法的一个通用的LINQ to SQL资料库

public IQueryable<T> Query(Expression<Func<T, bool>> filter) 
{ 
    return context.GetTable<T>().Where(filter); 
} 

public virtual void Update(T entity) 
{ 
    context.GetTable<T>().Attach(entity);   
} 

我不知道如何在消费类中实现这一点?理想情况下,我想传递一个userref并相应地更新用户?

回答

1

将其更改为:

public IQueryable<T> Query<T>(Expression<Func<T, bool>> filter) 
{ 
    return context.GetTable<T>().Where(filter); 
} 

public virtual void Update<T>(T entity) 
{ 
    context.GetTable<T>().Attach(entity);   
} 

var user=something.Query<User>(x=>x.Name=="bla bla").First; 
user.Name="alb alb"; 
something.Update(user); 

但考虑避免编写通用存储库。你从他们那里获益不多。如果它是通用的,则公开IQueryable,接受表达式过滤器,这是相当无用的抽象层,并且增加了复杂性。