2016-11-08 246 views
1

基于microService架构我已在两个方案分离成两个不同的分贝的下面看到的,映射实体

  • (VS2015解决方法1,的BusinessEntity项目)DB1 - > schema1 - >客户,供应商
  • (VS2015溶液2,BusinessEntity的项目)DB2 - > SCHEMA2 - >产品,订单,ORDERDETAILS

C# 现在我是夏晖在创建映射实体时应该如何以及在哪里创建映射实体。

我使用 “的PostgreSQL” 作为我的DB和 “功能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中拥有映射实体,或者我在架构上缺少某些东西,我该如何在映射实体中拥有该实体类型?

任何示例将不胜感激!

谢谢。

+0

还有一件事要考虑的是用例。说某些分析目的需要这些数据(查看哪个地区/客户的年龄购买了产品X或是服务于客户流量(显示他的购买)? – k1133

回答

0

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

+0

_您可以共享该ID,但您将不得不返回微服务它拥有域对象来填充它._这是处理这种场景的唯一方式吗?我的问题也适用于微服务架构或任何(请指定) –

+0

我不知道您的整个域,所以我不能真正评论使用微服务的决定是否好。下面是关于图的一个很好的解释。http://softwareengineering.stackexchange.com/questions/305469/microservices-architecture-and-bounded-contexts。大多数情况下,我想到你有一个有限上下文的微服务。 – Fran