NHibernate映射多实体至同表时是否在后台使用分布式事务?
NHibernate多实体映射至同表的事务特性
NHibernate的一项核心优势是:无需借助继承,就能将多个不同的实体类映射到同一个数据库表。
场景示例
针对餐厅限界上下文的实体:
public class RestaurantCustomer { public int Id; public string Name; }
针对库存限界上下文的实体:
public class InventoryCustomer { public int Id; public string Name; }
可以将这两个实体类都映射到数据库中的Customer表。
与EF Core的差异
EF Core实现该功能时,需要使用两个不同的DbContext,并且后台会自动启用分布式事务来协调操作。
NHibernate的处理方式
NHibernate不需要分布式事务就能支持该功能。
原因在于:你可以在同一个NHibernate会话(Session)中同时操作这两个实体——只要它们的映射配置都指向Customer表,且当前会话使用的是同一个数据库连接。所有针对这两个实体的增删改查操作,都会在同一个本地事务中执行,完全不需要分布式事务的介入。
内容的提问来源于stack exchange,提问作者Roshan Budhathoki
相关产品推荐
相关产品推荐

