使用泛型类型将值传递给FindById方法不起作用
本文关键字:FindById 方法 不起作用 值传 泛型类型 | 更新日期: 2023-09-27 18:05:11
我的所有实体都有一个存储库,如下所示:
public abstract class GenericRepository<C, T> :
IGenericRepository<T>
where T : class
where C : DbContext, new()
{
private C _entities = new C();
public C Context
{
get { return _entities; }
set { _entities = value; }
}
public virtual IQueryable<T> GetAll()
{
IQueryable<T> query = _entities.Set<T>();
return query;
}
public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
IQueryable<T> query = _entities.Set<T>().Where(predicate);
return query;
}
public virtual void Add(T entity)
{
_entities.Set<T>().Add(entity);
}
public virtual void Delete(T entity)
{
_entities.Set<T>().Remove(entity);
}
public virtual void Edit(T entity)
{
_entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
}
public virtual void Save()
{
_entities.SaveChanges();
}
}
所以我创建了一个用户存储库,它继承了上面的类,如下所示:
public class userRepository:GenericRepository<InModelContainer,User>
{
}
我的问题是,我如何在我的类中调用FindBy()方法,我的用户实体是这样的:
public partial class User
{
public User()
{
this.Ideas = new HashSet<Idea>();
this.Companies = new HashSet<Company>();
}
public int Id { get; set; }
[DisplayName("نام")]
[Required(ErrorMessage = "نام را وارد کنید")]
public string Name { get; set; }
}
我需要找到一个用户通过id,所以我必须使用findBy方法,但我不知道如何调用这个方法。
的例子:
userRepository objRepository= new userRepository();
public ActionResult Edit(int id)
{
return View(objRepository.FindBy());
}
我应该传递什么给上面的函数?
致以最亲切的问候。
我使用的是MVC4和EF6。
给你
userRepository objRepository= new userRepository();
public ActionResult Edit(int id)
{
return View(objRepository.FindBy(user => user.Id == id).FirstOrDefault());
}
将根据id过滤用户,并取第一个,如果没有匹配则取null。如果你想要一个异常,你也可以选择使用。first()。