Bunu yapmak için bir modele ihtiyacınız var, ancak bir veritabanına ihtiyacınız yok. Modeli bir EDMX olarak oluşturabilirsiniz, ancak Kod İlkini kullanmanız daha olasıdır. Kod İlk modelinin oluşturulmasının veya kullanılmasının bir veritabanı bağlantısına ihtiyaç duymadığından emin olmak için Kod İlkinin normal olarak veritabanından aldığı bazı bilgileri sağlamanız gerekecektir. Bu post http://blog.oneunicorn.com/2012/04/21/code-first-building-blocks/, bunu yapmak için DbModelBuilder'ı nasıl kullanacağınızı ve modelden bir DbContext'i nasıl oluşturacağınızı gösterir. Bunun gibi bazı kodlar ile bitireceğiz: Muhtemelen modeli nesne önbelleğe ziyade her farklı test için tekrar oluşturmak istersiniz
var modelBuilder = new DbModelBuilder();
modelBuilder.Entity<Foo>();
var model = modelBuilder.Build(
new DbProviderInfo("System.Data.SqlClient", "2008")).Compile();
.
DbContext'in veritabanına bağlanmayı denemesini önlemek için veritabanı başlatıcılarını da devre dışı bırakmalısınız. Örneğin, bağlamı kullanmadan önce bir çağrı aşağıdaki gibi yapın:
Database.SetInitializer<FooContext>(null);
Şimdi sadece o üretecektir Ne SQL görmek için herhangi bir sorguyu ToString kullanabilirsiniz. LINQ ifadeyi işleyemiyorsa, bir istisna alacaksınız. Bu atacağım
using (var context = new FooContext(model))
{
Expression<Func<Foo, bool>> predicate = x => x.Name == "Foo";
Console.WriteLine(context.Foos.Where(predicate));
}
:
using (var context = new FooContext(model))
{
var someOtherFoo = new Foo();
Expression<Func<Foo, bool>> predicate = x => x == someOtherFoo;
Console.WriteLine(context.Foos.Where(predicate));
}
Açıkçası sadece konsola baskı olmayacak testler yazılı ziyade bir çeşit çalışması yapıyorsanız Örneğin, bu sorguyu yazdırılacaktır iddiaların/kontrollerin.
Mükemmel, teşekkürler! –