gpt4 book ai didi

asp.net-mvc - 如何在 MVC 中使用 EF 克隆 Entity 对象及其所有关联的实体值

转载 作者:行者123 更新时间:2023-12-04 18:21:47 26 4
gpt4 key购买 nike

我有一个与其他实体具有“一对多”关联的实体“玩家”。当我克隆我的 Player 行之一时,与 Player 关联的实体不会被克隆。但 Player 数据行被克隆。我也需要关联值来克隆。我怎样才能做到这一点?

这是我的存储库中的代码

public Player CreateTemplate(Player player)
{
db.Detach(player);
Player.EntityKey = null;
db.AddToPlayer(player);
db.SaveChanges();
return player;
}

这是我的 Action 方法:
public ActionResult CreatePlayerTemplate(int id)
{
var player = MyRepository.GetPlayerdByID(id);
MyRepository.CreateTemplate(player);
return View();
}

更新:
这就是我检索 Player 的方式:
 public Player GetPlayerByID(int id)
{
return db.Player.SingleOrDefault(x => x.Id == id);
}

最佳答案

替代的,有点老套的方法 - 使用映射工具,如 AutoMapper

为参与克隆的每个实体定义自映射,并配置为忽略实体键

Mapper.CreateMap<Player, Player>()
.ForMember(x => x.EntityKey, y => y.Ignore());

Mapper.CreateMap<SomeOtherEntity, SomeOtherEntity>()
.ForMember(x => x.EntityKey, y => y.Ignore());

然后只是克隆实体
var clonnedPlayer = Mapper.Map<Player>(originalPlayer);

此外,通过这种方式,您可以配置不克隆类似查找的表以不复制查找数据

关于asp.net-mvc - 如何在 MVC 中使用 EF 克隆 Entity 对象及其所有关联的实体值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515515/

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