如果列和名称相同,实体框架是否关心EDMX中映射的表实际上是数据库中的视图?
我正在开发一个数据库可能需要更改的应用程序,但我们可能无法立即使用新的表结构部署更新的EDMX。我的同事想要为数据库中的每个表添加一个视图,并更新EDMX以映射到视图而不是表,并使用存储过程进行插入/更新/删除操作。这样,如果我们需要更改表结构,我们可以保持视图列和过程参数相同,并且我们的EDMX文件不会受到影响。对我而言,如果我们想要稍后更改其中一个,那么拥有镜像每个表的视图似乎有些过分,所以我正在寻找另一个解决方案。
一个想法是将EDMX映射到表。如果表需要稍后更改,则可以重命名该表,并且可以使用相同的名称和相同的列创建视图。
我尝试了一个实验并创建了表MyTable并将其映射到EDMX中。然后我将MyTable重命名为tblMyTable并创建了一个名为MyTable的视图,它从tblMyTable中选择所有视图。虽然EDMX仍然认为它映射到表,但是选择或更新MyTable实体没有问题。如果我必须拆开一个表并在视图中将数据连接在一起,那么更新将无法工作,但是如果需要,我应该能够使用INSTEAD OF触发器来处理它。
这种方法有问题吗?我以前从未见过这样做,但是从我做过的有限测试来看,它似乎应该有效。我知道这对主要的数据库更改不起作用 - 如果我想完全删除一个表,那么应用程序代码将不得不改变。我只是想知道实体框架为什么不能完全支持这一点的技术原因。