1 回答

TA貢獻1893條經驗 獲得超10個贊
一種選擇是利用 Automapper 執行淺層克隆。Automapper 可以配置為忽略特定屬性,例如 ID,或所有具有不可訪問的設置器的屬性:
因此,給定一個實體,例如:
public class SomeObject
{
public int SomeId { get; private set; }
public string Name { get; set; }
public SomeObject(int? id = null)
{
if (id.HasValue)
SomeId = id.Value;
}
}
您可以像這樣配置映射器:
var mapperConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<SomeObject, SomeObject>().IgnoreAllPropertiesWithAnInaccessibleSetter();
});
IMapper mapper = new Mapper(mapperConfig);
var test = new SomeObject(1) { Name = "Fred" }; // object we will clone.
var test2 = new SomeObject(); // example of an existing "new" object to copy values into...
mapper.Map(test, test2); // Copy values from first into 2nd..
var test3 = mapper.Map<SomeObject>(test); // Example of letting automapper create a new clone.
在這兩種情況下,ID 列都沒有被復制。您可能希望使用“test2”示例來利用 context.Entities.Create 為新實體創建新的跟蹤代理,盡管 EF 可以很好地處理實體的新 POCO 實例,前提是將其添加到實體 DbSet。
- 1 回答
- 0 關注
- 87 瀏覽
添加回答
舉報