3 года с опозданием, но вот как я это делаю:
https://github.com/lukesampson/LinqToSQL-test-extensions/
Нет необходимости писать обертку или делать много сантехники, просто поместите шаблон T4 рядом с вашим .dbml, и вы получите:
- Интерфейс для вашего контекста данных, например IExampleDataContext
- Макет в памяти для вашего контекста данных, например MemoryExampleDataContext
Оба будут автоматически использовать сопоставления, которые вы уже настроили в своем DBML.
Так что вы можете делать такие вещи, как
public class ProductRepo {
IExampleDataContext DB { get; set };
public ProductRepo(IExampleDataContext db) {
DB = db;
}
public List<Product> GetProducts() {
return DB.Products.ToList();
}
}
и вы можете позвонить с помощью либо
new ProductRepo(new MemoryExampleDataContext()).GetProducts(); // for testing
или
new ProductRepo(new ExampleDataContext()).GetProducts(); // use the real DB