数据库架构更改时如何获取编译时错误?

时间:2009-03-14 08:31:52

标签: asp.net sql data-binding

在ASP.NET项目中发生数据库架构更改时,您使用什么方法来获取编译时错误?

例如,如果你有一个绑定到DataSource的GridView,我只能在发生模式更改时获得运行时错误,而不是编译时错误。 Intellisense在使用数据集,LINQ等后面的代码上运行良好,但是当我更改模式时,我似乎无法在ASP.NET页面上获得编译时错误。

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

创建一个单元测试,用于验证数据访问层的正确性,并确保它涵盖所有与数据库相关的代码。并非一切都可以在编译时捕获......

答案 1 :(得分:1)

我能想到的轻松实现此行为的一种方法是将数据绑定到动态DAL。有一些工具可以帮助我们进行DAL生成,我建议您查看SubSonic

一旦你有类似SubSonic的东西,你可以绑定到生成的业务对象。如果数据库中的模式更改,这些业务对象将自动更改,这将破坏您的绑定代码,这将导致编译时错误。

<强>更新

Assaf建议使用单元测试也是一个好主意。它并没有解决你陈述的问题,但它肯定是应该存在的东西,并且是标记这类问题的好工具。

答案 2 :(得分:0)

我们使用一个适度的系统(xml到c ++)从一个独立的描述创建模式,这个系统还为我们在代码中使用的表和列创建名称,当模式更改时,名称会发生​​变化,如我们最初使用的名称不再存在,编译器将标记错误。

你可以配置很多DAO生成工具来做类似的事情。

答案 3 :(得分:0)

一种解决方案是对数据库进行版本控制,并将应用程序构建映射到特定版本(可能在属性文件中)。在应用程序的入口点,您可以将预期版本与实际版本进行比较,并相应地处理错误。

我不确定在Rails中的迁移的ASP.net或Java中的dbdeploy中用于版本化数据库的等价物。但是任何数据库版本控制工具都可以使模式更改增量和版本化,并跟踪版本表中的版本将适合此目的。

但是,如果您在构建应用程序时需要编译时错误,那么您最好在构建过程中将架构升级到最新版本,从而避免首先出现架构更改的可能性。