我正在尝试模拟在存储库中保存实体的行为(使用通用T参数)。对于Save()方法,我需要存储给定实体的新实例而不是实际实例。
我考虑过使用AutoMapper:
public void Save(T entity)
{
var newEntity = Mapper.Map<T, T>(entity);
this.AddOrUpdate(newEntity);
}
问题是newEntity实际上是与实体相同的实例,我对实体属性所做的任何更改都会影响存储的newEntity。
感谢您的帮助。
答案 0 :(得分:1)
您可以通过Activator创建T的新实例,然后将现有实体中的值复制到新创建的实体:
var newEntity = Activator.CreateInstance<T>();
Mapper.Map(entity, newEntity);
答案 1 :(得分:1)
我认为应该是这样的:
public void Save(T entity)
{
Mapper.CreateMap<T, T>();
var newEntity = Mapper.Map<T, T>(entity);
}