2016-11-08 352 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