EF Core 6使用Linq的repo模式的扩展方法



我想为EF Core 6创建一个存储库样式模式。我知道大多数人都说我不需要这样做,但我希望有这样的函数。

例如,它使代码看起来更整洁。

GetALL();
GetSingleRecord(1); 
Update(record);

我在EF Core 6中尝试了这样的东西:

public static class ConciergeExtensions
{
public static IQueryable<Rooms> GetAllRooms(this DbSet<Rooms> rooms)
{
return rooms;
}
public static Rooms GetSingleRoom(this DbSet<Rooms> rooms, int Id)
{
return rooms.Where(w => w.Id == Id).FirstOrDefault();
}
}

但是当我去访问我的方法时,它找不到:

public Rooms GetSingleRoom() => db.Rooms.GetSingleRoom()

由于没有将参数idroomId传递给在where条件下查询的扩展方法,


public Rooms GetSingleRoom(int roomId) => db.Rooms.GetSingleRoom(roomId)

这是我已经工作的例子扩展方法。

public static IQueryable<TEntity> ApplyFilter<TEntity>(this IQueryable<TEntity> query, Expression<Func<TEntity, bool>> filter) where TEntity : class
{
return query.AsQueryable().Where(filter);
}
...
// SomeService.cs

using DAL.EntityExtensions; // --> Implementation here
public User Get(Expression<Func<Admin, bool>> filter = null)
{
return _context.User.ApplyFilter(filter).FirstOrDefault();
}

试试这个,希望能有所帮助

最新更新