3

如果列和名称相同,实体框架是否关心在 EDMX 中映射的表是否实际上是数据库中的视图?

我正在开发一个数据库可能必须更改的应用程序,但我们可能无法立即使用新表结构部署更新的 EDMX。我的同事想为数据库中的每个表添加一个视图并更新 EDMX 以映射到视图而不是表,并使用存储过程进行插入/更新/删除操作。这样,如果我们需要更改表结构,我们可以保持视图列和过程参数相同,并且我们的 EDMX 文件不会受到影响。对我来说,为了以防万一我们以后想更改其中一个,拥有镜像每个表的视图似乎有点矫枉过正,所以我正在寻找另一种解决方案。

一种想法是让 EDMX 映射到表。如果表需要稍后更改,则可以重命名表,并可以创建具有相同名称和相同列的视图。

我尝试了一个实验并创建了表 MyTable 并将其映射到 EDMX。然后我将 MyTable 重命名为 tblMyTable 并创建了一个名为 MyTable 的视图,该视图从 tblMyTable 中选择所有内容。尽管 EDMX 仍然认为它已映射到表,但它在选择或更新 MyTable 实体时没有问题。如果我必须拆分表并将数据重新连接到视图中,则更新将不起作用,但如果需要,我应该能够使用 INSTEAD OF 触发器来处理它。

这种方法有什么问题吗?我以前从未见过这样做,但从我所做的有限测试来看,它似乎应该可以工作。我知道这不适用于主要的数据库更改——如果我想完全删除一个表,那么应用程序代码将不得不更改。我只是想知道实体框架是否有一些技术原因不能完全支持这一点。

4

0 回答 0