gpt4 book ai didi

c# - 将 SimpleDB(与 SimpleSavant)与 POCO/现有实体一起使用,而不是我类上的属性

转载 作者:行者123 更新时间:2023-11-30 17:23:09 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 Simple Savant,以使用 SimpleDB

我目前有(例如)

public class Person
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime DateOfBirth { get; set; }
}

要将其与 Simple Savant 一起使用,我必须将属性放在类声明之上,将属性 - [DomainName("Person")] 放在类之上,将 [ItemName] 放在 Id 属性之上。

我的所有实体都在一个单独的程序集中。我还有一个单独的程序集的数据访问类,类工厂根据配置选择 IRepository(在本例中为 IRepository

我希望能够使用我现有的简单类 - 而无需属性等属性。如果我从简单的数据库切换到其他东西——那么我只需要创建一个不同的 IRepository 实现。

我是否应该创建一个“DTO”类型的类来将两者映射在一起?

有没有更好的办法?

最佳答案

您应该在 Typeless Operations 上查看 Savant 文档.无类型操作允许您使用动态构建的映射而不是数据/模型对象与 Savant 交互。例如,您可以像这样为您的 Person 类创建一个动态映射:

ItemMapping personMapping = ItemMapping.Create("Person", AttributeMapping.Create("Id", typeof (Guid)));
personMapping.AttributeMappings.Add(AttributeMapping.Create("Name", typeof (string)));
personMapping.AttributeMappings.Add(AttributeMapping.Create("Description", typeof(string)));
personMapping.AttributeMappings.Add(AttributeMapping.Create("DateOfBirth", typeof(DateTime)));

使用此方法时没有功能限制,因为这些 ItemMappings 是 Savant 在内部用于所有操作的。使用此方法理解和设置您的映射需要做更多的工作。

以下是使用此方法检索 Person 对象的方法:

Guid personId = Guid.NewGuid();
PropertyValues values = savant.GetAttributes(personMapping, personId);
Person p = PropertyValues.CreateItem(personMapping, typeof(Person), values);

关于c# - 将 SimpleDB(与 SimpleSavant)与 POCO/现有实体一起使用,而不是我类上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com