我正在尝试在我的应用程序中使用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”类型类来将两者映射在一起吗?
有更好的方法吗?
答案 0 :(得分:2)
您应该查看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);