using System.Collections.Generic;
public class YourEntities
public DbSet<User> Users { get; set; }
public DbSet<Book> Books { get; set; }
public DbSet<TEntity> Set<TEntity>() where TEntity : class
public class User : IEntity
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public class Book : IEntity
public int Id { get; set; }
public string Name { get; set; }
public class BaseRepository<T> where T : IEntity
public YourEntities Entities { get; set; }
public BaseRepository(YourEntities entities)
this.Entities = entities;
return this.Entities.Set<T>().ToList();
public class UserRepository : BaseRepository<User>
public UserRepository(YourEntities entities)
public List<User> GetAllUserSortByName()
return this.GetAll().OrderBy(u => u.Lastname).ThenBy(u => u.Firstname).ToList();
public static void Main()
YourEntities entities = new YourEntities();
UserRepository repo = new UserRepository(entities);
List<User> users = repo.GetAllUserSortByName();