我在Entity-Frameworks
实体使用POCO
时遇到问题。我有产品和类别之间的关系,我有以下代码可以在数据库中保留:
public virtual void Add(T entity)
{
ContextEntity.AddObject(entity);
Context.SaveChanges();
}
我正在尝试创建一个已经存在类别的新产品,但是当我查询数据库时,新产品与新类别的关系具有与我正在试图联系的先前类别相同的值。
我一直在寻找答案,但这些例子对我不起作用,因为我没有他们在示例中使用的相同方法。也许是因为我使用的是POCO
个实体,我不确定。
答案 0 :(得分:1)
我对你的代码做了一些假设,但也许其中一种方法会有所帮助。
创建新的Product实例时,您可以设置外键 值类似于现有类别ID
如果要设置导航属性“Product.Category”,请执行 必须确保以下内容:
引用的Category实例必须由上下文拥有,方法是使用Context.Categories.Attach
或首先通过上下文获取它。 Context.Categories.FirstOrDefault(c => c.id == 1)
如果将Product.Category
设置为等于已断开连接的类别实例,则上下文将自动尝试添加引用的实例。
答案 1 :(得分:0)
[HttpPost]
public ActionResult Create(CategoriaView collection)
{
try
{
UnidadDeMedida unidadDeMedida=
unidadDeMedidaService.GetByCriteria(i => i.IdUnidadDeMedida == collection.UnidadDeMedida.IdUnidadDeMedida)
.FirstOrDefault();
Mapper.CreateMap<UnidadDeMedida,UnidadDeMedidaView>();
Mapper.CreateMap<UnidadDeMedidaView,UnidadDeMedida>();
UnidadDeMedidaView unidadDeMedidaView =
Mapper.Map<UnidadDeMedida,UnidadDeMedidaView>(unidadDeMedida);
collection.UnidadDeMedida = unidadDeMedidaView;
Mapper.CreateMap<CategoriaView, Categoria>();
Categoria categoria =
Mapper.Map<CategoriaView, Categoria>(collection);
categoria.UnidadDeMedida = unidadDeMedida;
service.Add(categoria);
return RedirectToAction("Index");
}
catch
{
return View();
}
}