如何将update方法用于通用LINQ to SQL存储库

时间:2010-11-16 06:46:08

标签: c# 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 个答案:

答案 0 :(得分: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,接受表达式过滤器,它是非常无用的抽象层,只是增加了复杂性。