我首先使用c#entity framework 5代码
一切顺利,直到我开始对代码进行单元测试,我认为它们与数据库迁移有关。
无论我尝试实体还是抱怨数据库模型现在不同(它不是),或者它抱怨它无法找到某些对象/模型。
我正在使用表属性来映射模型,单元测试似乎忽略了这个事实并尝试使用原始模型名称而不是我给它的表名来构造sql。
结果讯息:
测试方法AllWales.Tests.Seeding_test.Test_County_Seed_is_22扔了 异常:System.Data.SqlClient.SqlException:找不到该对象 “dbo.AccommodationModels”因为它不存在或者你没有 权限。
AccommodationModel是原始的类名,但是我正在使用表属性:
[Table("Accommodations")]
public class AccommodationModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }
public string PropertyReference { get; set; }
public string Name { get; set; }
等 等
我的DBContext
public class AllWalesDbContext : DbContext
{
static AllWalesDbContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<AllWalesDbContext, Configuration>());
}
public AllWalesDbContext():base("AllWalesDbContext") {}
等 等
我也试过
static AllWalesDbContext()
{
Database.SetInitializer<AllWalesDbContext>(null);
}
除了使用实体的单元测试项目
之外,所有其他代码都运行良好我的单元测试
[TestClass()]
public class Seeding_test
{
[TestMethod()]
public void Test_County_Seed_is_22()
{
int expected = 22;
int actual = 0;
using (var context = new AllWalesDbContext())
{
actual = context.County.Count();
}
Assert.AreEqual(expected, actual);
}
}
现在把头撞在墙上几天了。