具有联合体系结构概念的设计实体

时间:2016-08-09 06:53:05

标签: c# design-patterns architecture arangodb

根据Union Architecture的概念,我的实体(POCO)存在于内层,并且它与其他项目或库没有任何依赖关系。

 我在我的数据访问层使用ArangoDB NoSql,我必须在我的c#属性上使用“ArangoDB属性”将我的属性映射到ArangoDD字段:

例如:

public class User
{
    [AliasField("_key")]
    public string Id { get; set; }
}


对于这个问题,我必须参考Arango.Client Dll!:

enter image description here

现在,我必须为这个问题做些什么?我怎样才能删除我的依赖?

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:0)

这是洋葱建筑。

实际上,您的域名不应该与持久性有任何关联。

如图所示,持久性是基础架构层的一部分。 您必须创建一个与核心模型和ArangoDB相关的持久层。 在那里,您可以创建使用ArangoDB注释注释的实体并将它们映射到您的域,或者您可以以其他方式提供映射,这样您就不需要在模型之间进行此转换。

使用洋葱架构带来了更多的工作,特别是在设置新项目时,它也提供了许多好处。

答案 1 :(得分:0)

如果使用ArangoDB.Client,除了在类成员上指定属性外,还可以为命名约定设置映射

您可以更改默认标识符命名约定的方式:

sharedSetting.Collection.ChangeIdentifierDefaultName(IdentifierType.Key, "Id");

或使用班级名称:

// this will resolve `UserId` => `_key`
sharedSetting.Collection.ChangeIdentifierDefaultName(IdentifierType.Key, (m) => $"{m.Name}Id");

或其他成员:

sharedSetting.Collection.ChangeDocumentPropertyForType<User>(u => u.Id, p =>
{
    p.PropertyName = "_key";
});

您可以在http://arangoclient.net/Document/ArangoDatabase

了解如何使用SharedSetting

请注意ArangoDB.Client尚不支持ArangoDB 3.0。支持将在本月加入