Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 映射具有两个不同模式的依赖关系的实体';微服务体系结构研究_C#_Nhibernate_Fluent Nhibernate_Microservices - Fatal编程技术网

C# 映射具有两个不同模式的依赖关系的实体';微服务体系结构研究

C# 映射具有两个不同模式的依赖关系的实体';微服务体系结构研究,c#,nhibernate,fluent-nhibernate,microservices,C#,Nhibernate,Fluent Nhibernate,Microservices,基于微服务架构,我将这两个方案分为两个不同的数据库,见下文 (VS2015解决方案1,BusinessEntity项目)db1->schema1->客户,供应商 (VS2015解决方案2,BusinessEntity项目)db2->schema2->产品、订单、订单详细信息 C# 现在,我在创建映射实体时遇到了一个问题,我应该如何以及在哪里创建映射实体 我使用“PostgreSQL”作为我的数据库和“Fluent nHibernate” 问题 我应该在哪里拥有这个实体 因为我遵循的是微服务架

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

  • (VS2015解决方案1,BusinessEntity项目)db1->schema1->客户,供应商
  • (VS2015解决方案2,BusinessEntity项目)db2->schema2->产品、订单、订单详细信息
C# 现在,我在创建映射实体时遇到了一个问题,我应该如何以及在哪里创建映射实体

我使用“PostgreSQL”作为我的数据库和“Fluent nHibernate”

问题

  • 我应该在哪里拥有这个实体
  • 因为我遵循的是微服务架构,所以我在schema2中单独使用了“Order”实体。因此,如果我将在schema1中拥有映射实体,或者我在架构方面遗漏了什么,那么如何在映射实体中拥有该实体类型
  • 任何例子都将不胜感激


    谢谢。

    微服务体系结构的全部要点是在不同的有界上下文中隔离功能。从您的示例中,您得到了两个有界上下文(模式1和模式2)。您不能跨这些域共享域对象。您可以共享Id,但必须返回拥有域对象的微服务来填充它

    微服务体系结构的全部要点是在不同的有界上下文中隔离功能。从您的示例中,您得到了两个有界上下文(模式1和模式2)。您不能跨这些域共享域对象。您可以共享Id,但必须返回拥有域对象的微服务来填充它

    您可以共享Id,但必须返回拥有域对象的微服务来填充它。这是处理这种情况的唯一方法吗?我的问题是否适用于微服务体系结构或任何(请具体说明)我不了解您的整个领域,因此我无法评论使用微服务的决定是否正确。这里有一个很好的解释和图表。在大多数情况下,我认为每个有界上下文都有一个微服务。你可以共享Id,但你必须返回拥有域对象的微服务来填充它。这是处理这种情况的唯一方法吗?我的问题是否适用于微服务体系结构或任何(请具体说明)我不了解您的整个领域,因此我无法评论使用微服务的决定是否正确。这里有一个很好的解释和图表。在大多数情况下,我的想法是,每一个有边界的上下文都有一个微服务。说这个数据需要一些分析的目的(看到哪个地区/客户年龄购买产品X或是服务客户流量(显示他的购买)?还有一件事要考虑的是用例。说这个数据是需要一些分析的目的(看到哪个地区/客户年龄购买产品X或是服务客户流量)。(显示他的购买)?
    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; }
    }