I have a project based on EF Code First
using MSSQL server
. In one of my repositories I'm dynamically building a query using PredicateBuilder
. To test all possible outcome manually every time something changes in the code, is very time consuming.
For that reason, I'd like to automate this by unit testing it. I was thinking about using sql compact
for unit test and MSSQL server
for production. But how would one enable migrations for sql compact
server?
This is dbContext class:
public partial class ApplicationDbContext :
IdentityDbContext<ApplicationUser, ApplicationRole, int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
public ApplicationDbContext() : base("name=DefaultConnection") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
base.OnModelCreating(modelBuilder);
}
}
Repository:
public class FilterRepository : IFilterRepository
{
private ApplicationDbContext _dbContext;
public FilterRepository(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
DbInterception.Add(new CommandInterceptor());
}
public IEnumerable<Person> GetPersons(Filter filter)
{
try
{
var persons = PredicateBuilder.False<Person>();
_dbContext.Configuration.AutoDetectChangesEnabled = false;
var result = _dbContext.Persons
.AsNoTracking()
.Where(persons)
.OrderBy(x => x.Name)
.Skip(filter.Skip)
.Take(10)
.ToList();
_dbContext.Configuration.AutoDetectChangesEnabled = true;
return result;
}
catch (Exception ex)
{
}
}
}