一对多关系中从表的数据如何删除和更新。

sftl25789 2017-09-11 02:01:17
一对多关系中从表的数据如何删除和更新。

主表如下:

public class A
{
public int ID{get;set;}

// 从表导航属性
public virtual List<B> bs{get;set;}
}

从表:
public class B
{
public int ID{get;set;}

// A表外键
public int Aid{get;set;}
// A表导航属性
public virtual A a{get;set;}
}


Map已经设置好了对照关系。

但是插入A表和B表的数据时是没有问题的,都能正确插入。但是,我想把B表的数据进行更新,有的数据会被删除,有的不变,还会增加新的数据进去。

应该怎么办呢?

我把EF封装到了数据层,不能在其他层使用ef的代码。我每次更新从表数据时都是重新new一次,也就是a.Bs = new List<B>();但是这样更新的话,新的数据会被EF当作新记录插入到从表,原有的记录还在,怎样删除原有的记录呢?
...全文
1565 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sftl25789 2017-09-12
  • 打赏
  • 举报
回复
请问各位有没有什么更好的办法?
sftl25789 2017-09-12
  • 打赏
  • 举报
回复
谢谢,帮忙,问题解决了,我在从表实体里加了一个属性用来标识是否被删除,在Data层,提交时遍历所有这个属性为true的实体,然后在上下文中删除。 虽然实现了,但是感觉这样不是很理想。
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
哦,看错了,你是要更新主从表信息? 为何 A不是通过ef查询出来的?
正怒月神 2017-09-11
  • 打赏
  • 举报
回复
public override A Update(A entity) { foreach (var b in entity.bs) { base.context.B.Attach(b); } base.context.OperationRegister.Attach(entity); base.context.Entry(entity).State = System.Data.Entity.EntityState.Modified; return base.context.SaveChanges() > 0 ? entity : null; }
exception92 2017-09-11
  • 打赏
  • 举报
回复
一对多关系中从表的数据如何删除和更新 -》foreach呀。
sftl25789 2017-09-11
  • 打赏
  • 举报
回复
补充数据层实现方式 public override A Update(A entity) { foreach (var b in entity.bs) { base.context.B.Attach(b); } base.context.OperationRegister.Attach(entity); base.context.Entry(entity).State = System.Data.Entity.EntityState.Modified; return base.context.SaveChanges() > 0 ? entity : null; }
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧