【发布时间】:2011-05-30 01:04:34
【问题描述】:
我有一个从数据库中提取的模型。后来,我从数据库中删除了表,但没有更新模型。现在,我应该执行一个测试来测试该表是否存在于模型中但不存在于数据库中。谁能告诉我如何使用代码检查这个?
【问题讨论】:
-
你想达到什么目的??
标签: sql-server asp.net-mvc linq-to-sql asp.net-mvc-2
我有一个从数据库中提取的模型。后来,我从数据库中删除了表,但没有更新模型。现在,我应该执行一个测试来测试该表是否存在于模型中但不存在于数据库中。谁能告诉我如何使用代码检查这个?
【问题讨论】:
标签: sql-server asp.net-mvc linq-to-sql asp.net-mvc-2
您可以连接到数据库并获取 information_schema.Tables 表,然后检查您希望拥有的所有表是否都在其中。
获取 Linq-to-Sql DataContext 使用的所有表:
var dataContext = new DataContext();
var dataContextTableNames = (from tables in dataContext.Mapping.GetTables()
select tables.TableName).ToList();
然后使用您选择的 sql 方法,您将在数据库上运行“SELECT [TABLE_NAME] FROM [Information_Schema].[Tables]”,并将其与 DataContext 中的数据进行比较。
【讨论】:
好吧,一种快速简单的方法可能是尝试使用 Model 和 Linq-to-Sql 在表中插入或选择某些内容,并检查是否抛出了 SQLException。我不确定您是否可以捕获异常中的任何特定内容,例如 SQLTableDoesNotExistException,但是如果抛出的异常有任何特定属性可以区分其他 SQLException,那么在调试器中应该很容易看到。
【讨论】:
嗯.. 看起来您正在尝试编写新测试。在删除这些表之前,您是否没有首先验证表和实体交互的集成测试?
一旦从数据库中删除表,这些集成测试就会失败。
【讨论】: