我有从数据库中提取的模型。后来,我从数据库中删除了表,但没有更新模型。现在,我应该执行一个测试来测试表是否存在于Model中但不存在于数据库中。任何人都可以告诉我如何使用代码检查这个吗?
答案 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)
嗯..看起来你正在尝试编写新的测试。在删除这些表之前,您是否首先要使用集成测试来验证表和实体的交互?
一旦从数据库中删除表,这些集成测试就会失败。