映射具有依赖于微服务体系结构上的两个不同架构的实体



基于微服务架构,我将两种方案分离为两个不同的数据库,见下文,

  • (VS2015 Solution1, BusinessEntity project) db1 -> schema1 ->客户,供应商
  • (VS2015 Solution2, BusinessEntity项目)db2 -> schema2 -> product, order, orderdetails
c#

现在我在创建映射实体时遇到了问题,我应该如何以及在哪里创建映射实体。

我使用"PostgreSQL"作为我的DB和"Fluent nHibernate"

public class CustomerOrderMap
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
// (pkey property)
public virtual int Id  { get; set; } 
// (fk property, this is in db1, schema1)
public virtual int CustomerId     { get; set; } 
public virtual Customer Customer  { get; set; }
// (fk property, this is in db2, schema2)
public virtual int OrderId    { get; set; }
public virtual Order Order    { get; set; }
}

  1. 我应该把这个实体放在哪里?
  2. 由于我遵循微服务架构,我在schema2中单独拥有"Order"实体。因此,如果我要在schema1中拥有映射实体,我如何在映射实体中拥有该实体类型,或者我是否在架构方面缺少了一些东西?

任何例子都会很感激!!

谢谢。

微服务架构的重点是将功能隔离在不同的有界上下文中。从你的例子中,你有两个有界的上下文(模式1和模式2)。你不会跨这些领域共享领域对象。您可以共享Id,但是您将不得不返回拥有域对象的微服务来填充它。

最新更新