具有多个edmx的entity framework

假设我在我的数据库中有多个数据库模式,例如:HumanRessources和Inventory。

在每个架构中包含多个表。 您是否经常将数据库拆分为多个edmx,或者通常只将所有内容放在一个edmx中?

我正在考虑为每个模式创建一个edmx,但想知道这将如何影响unitorwork模式。 通过阅读一些文章,ObjectContext将成为单位工作。 通过定义2个edmx,我将得到2个ObjectContext:HumanRessourceContext和InventoryContext,这意味着每个将是一个单元工作。 如果我希望对人力资源中的实体和库存上下文中的实体进行的所有修改都是ATOMIC,那么这可以通过单元模式来实现吗?

虽然这不是通过模式将数据库拆分为EDMX的认可,但您可以使用TransactionScope使更新成为primefaces:

 using(TransactionScope trans = new TransactionScope()) { using(HumanResources hr = new HumanResources()) { //... hr.SaveChanges(); } using(Inventory inv = new Inventory()) { //... inv.SaveChanges(); } trans.Complete(); } 

显然,您可以根据需要重新排列上下文对象(例如,如果您需要同时使用它们),并且您可以将事务隔离级别更改为适当的任何内容,但这应该为您提供您需要知道的内容。为了使您的数据库更改为primefaces。

如果您的Inventory和HumanResources表之间没有任何关系,将表拆分为两个edmx文件很好,但我不知道它会带来什么好处。 如果他们确实有直接或间接的关系,那么在尝试使用这些关系时会遇到问题。 最简单的解决方案是使用单个EDM。