我正在努力在azure移动服务中使用表控制器插入一个引用其他现有实体的新实体。
这是我的设置:
实体:
.php
DTOS:
public class EntityB : EntityData
{
public EntityA Parent { get; set; }
//some data
}
public class EntityA : EntityData
{
//some data
}
控制器:
public class DtoEntityB : EntityData
{
public DtoEntityA Parent { get; set; }
//some data
}
public class DtoEntityA : EntityData
{
//some data
}
映射器:
public class Controller : TableController<DtoEntityB>
{
public virtual async Task<DtoEntityB> Post(DtoEntityB entity)
{
return await InsertAsync(entity);
}
}
EntityA已经存在,所以我进行了一次客户端调用,导致JSON被发送到Post方法。然后一切正常,直到EF告诉我已经有一个id = 317238621736的EntityA。
AutoMapper.Mapper.Initialize(cfg =>
{
// use other mapper
cfg.CreateMap<DtoEntityB, EntityB>();
cfg.CreateMap<EntityB, DtoEntityB>();
cfg.CreateMap<DtoEntityA, EntityA>();
cfg.CreateMap<EntityA, DtoEntityA>();
}
我正在寻找这个问题的通用解决方案(现在我对每个现有引用的上下文(attach)进行直接操作,将它与Mapper结合起来使得这种方法不可持续。