如何检查表是否存在于模型中但不存在于数据库中

时间:2010-12-23 15:43:13

标签: sql-server asp.net-mvc linq-to-sql asp.net-mvc-2

我有从数据库中提取的模型。后来,我从数据库中删除了表,但没有更新模型。现在,我应该执行一个测试来测试表是否存在于Model中但不存在于数据库中。任何人都可以告诉我如何使用代码检查这个吗?

3 个答案:

答案 0 :(得分: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中的那些进行比较。

答案 1 :(得分:1)

嗯,快速而简单的方法可能是尝试使用Model和Linq-to-Sql在表中插入或选择某些内容,并检查是否抛出了SQLException。我不确定您是否可以捕获异常中的任何特定内容,如SQLTableDoesNotExistException,但如果抛出异常的任何特定属性,您可以很容易地在调试器中看到它可以区分其他SQLExceptions。

答案 2 :(得分:0)

嗯..看起来你正在尝试编写新的测试。在删除这些表之前,您是否首先要使用集成测试来验证表和实体的交互?

一旦从数据库中删除表,这些集成测试就会失败。