2011-10-10 56 views
1

假定存在以下情况(关系数据库),如何重新模型像ravendb或面向文档数据库现​​有的数据模型MongoDB的

class Currency 
{ 
long id; 
String code; 
String name; 
} 

class OrderGroup 
{ 
long id; 
Collection<Order> Orders; 
} 

class Order 
{ 
long id; 
long currency; 
} 

在实际场景中会有大量的订单(数量不断增加)。将此转换为支持基于文档的数据库的最佳方式是什么?有一个选项可以更改货币代码和名称,如果货币添加为订单子,它会在所有订单中自动更新。

回答

2

当在文档数据库中建模关系数据库时,如果在DDD术语“Aggregates”中考虑并帮助您考虑如何改变对象的值将会有所帮助。该对象要么是Enitty or a Value Object,因此在这种情况下,如果您想要更改货币影响现有订单,则货币不是价值对象,您只需在Order中使用Currency对象的引用,就像关系模型一样。模型,可以像这样将在RavenDb工作:

OrderGroup汇总:

public class OrderGroup 
{ 
    public int Id { get; set; } 
    public IList<Order> Orders { get; set; } 
} 

public class Order 
{ 
    public int Id { get; set; } 
    public int Currency { get; set; } 
} 

货币实体:但是

public class Currency 
{ 
    public int Id { get; set; } 
    public string Code { get; set; } 
    public string Name { get; set; } 
} 

注意的是,像这样的造型是你需要单独的查询来获取/更新相关对象。

+0

埃里克埃文斯聚合的+1。 –

相关问题