【发布时间】:2013-11-07 21:38:52
【问题描述】:
我有一个实体框架数据库优先模型。
我想编写一个 MSTest/nUnit 测试来验证在我的 edmx 模型中定义的所有存储过程和表在数据库上仍然有效。
有一个庞大的开发团队,其中一些人只处理存储过程,而另一些人则在 c# 中工作,我想运行一个集成测试来验证/验证项目中的 EF 模型。
我在 Linq2Sql 中进行了测试,以查找存储过程调用中常见的属性,然后运行 SQL 查询以验证存储过程是否仍然存在。 我现在已升级到 EF6,我想在构建中保持类似的健全性检查。
这是我目前所拥有的。
var list = context.MetadataWorkspace.GetItems<EntityType>(DataSpace.CSpace);
var badSp = new List<string>();
foreach (var table in list)
{
if (!DoesTableExist(dbContext, table))
{
badSp.Add(table.Name);
}
}
if (badSp.Any())
{
var retval = new StringBuilder();
retval.AppendLine("The Following Objects do not exist in the database but do not exist the " + dbContext.GetType().Name + ".edmx, they may be obsolete");
badSp.Sort();
foreach (var sp in badSp)
{
retval.AppendLine(sp);
}
Assert.Fail(retval.ToString())
}
我提出的一些问题是这并不能告诉我表是否在不同的架构中。架构返回 null。我有多个架构中的表。
我也想做一个类似的测试来验证表和视图,它们也在不同的模式中。
【问题讨论】:
-
如何读取实体框架模型并针对给定的连接进行验证?
标签: c# sql-server entity-framework nunit mstest