根据Union Architecture的概念,我的实体(POCO)存在于内层,并且它与其他项目或库没有任何依赖关系。
我在我的数据访问层使用ArangoDB NoSql,我必须在我的c#属性上使用“ArangoDB属性”将我的属性映射到ArangoDD字段:
例如:
public class User
{
[AliasField("_key")]
public string Id { get; set; }
}
对于这个问题,我必须参考Arango.Client Dll!:
现在,我必须为这个问题做些什么?我怎样才能删除我的依赖?
任何人都可以帮助我?
答案 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。支持将在本月加入