如何从数据库中拒绝某些表的EF更新模型?

时间:2012-04-13 04:47:48

标签: entity-framework ef-database-first

有没有办法告诉EF在执行Update Model From Database时不要更新单个表的SSDL?

更多细节:
我们正在使用EF 4.3和Db-first方法(因此,edmx和从数据库更新模型)。

我们有一个表,由于某些原因,在SQL Server中没有设置主键,但有一个自动递增的Identity列,我们可以告诉EF将其用作主键。

由于EF没有在表本身中找到任何主键,因此它在该表的SSDL中生成一个DefiningQuery(并阻止更新/插入)。

我可以轻松删除DefiningQuery(并修改其他EntitySet属性),一切正常。

除非我再做一次Update Model From Database,否则DefiningQuery又回来了。

有没有办法告诉EF不要更新该单个表的SSDL?

1 个答案:

答案 0 :(得分:1)

  

有没有办法告诉EF不要更新单个表的SSDL   从数据库做更新模型?

不使用Visual Studio中提供的默认设计器。一旦修改了EDMX文件的SSDL部分,就应该手动维护它,或编写一个脚本,每次从数据库运行Update时都会修复它。

或者,您可以购买更强大的设计师或extension to Visual Studio,它将为您提供选择性更新。

无论如何,应该避免你要做的事情。如果数据库归ERP所有,则只能通过ERP编程API进行访问(真正的ERP有一些)。否则,您可能会破坏ERP的功能,破坏ERP数据,导致性能问题甚至导致死锁。