Unit testing, Linq to SQL and working with data context

I looked at the following, and it turned out that there are big advantages that can be obtained by using compiled queries ... http://blogs.msdn.com/ricom/archive/2008/01/14/performance-quiz-13-linq -to-sql-compiled-query-cost-solution.aspx

My problem is that I want to unit test my queries, but compiled queries need a specific instance of the class that comes from the DataContext (which is especially difficult to mock) ... So I came up with the following code and I was wondering if anyone about whether I should benefit from compiled queries ...

private static readonly Func<IDatabase, IActionParameters, ISportProgramMapper, IQueryable<ISportProgram>> _GetQueryUnCompiled =
    (db, parameters, mapper) => from x in db.SportProgramDataSource.ThatHaveActiveSports()
                                where x.SportProgramId == parameters.Id
                                select mapper.FromDataToEntity(x);

private static readonly Func<Database, IActionParameters, ISportProgramMapper, IQueryable<ISportProgram>> _GetQuery = CompiledQuery.Compile<Database, int, ISportProgramMapper, IQueryable<ISportProgram>>((db, parameters, mapper) => _GetQueryUnCompiled(db, parameters, mapper));

public IActionResult<ISportProgram> Get(IActionParameters parameters)
{
    Check.Argument("parameters").ThatValue(parameters).IsNotNull();

    IDatabase db = this.CreateDatabase(); 
    ISportProgramMapper mapper = this.CreateMapper<ISportProgramMapper>();
    Database typedDb = db as Database;

    var result = typedDb != null ? _GetQuery(typedDb, parameters, mapper).FirstOrDefault() : _GetQueryUnCompiled(db, parameters, mapper).FirstOrDefault();

    return this.CreateActionResult(result);
}

unit test my db Database, , , prod- Database .

: , , , DAL, , IQueryable, , , , , , , ... _GetQuery _GetQueryUnCompiled, ?

+5
1

, IEnumerable<> ? , ?

+1

All Articles