none
EF删除产品信息时 要删除多个表关联信息 RRS feed

  • 问题

  • 用 entity F来做,怎么做 教一下!谢谢了

     //已经设置了相关表的层叠属性 删除一个其他自动删除              
                    var u = re.Products.Where(a => a.ProductID == proid).First();
                    re.DeleteObject(u);
                    re.SaveChanges();

    提示:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象

    2010年6月30日 5:23

答案

  • 你要先删除对product的引用,比如表OrderItem里有一个到Product.Id的外键的话,需要将其设为空值对应。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 曾祥展 2010年7月1日 3:34
    2010年6月30日 19:59
    版主

全部回复

  • ado.net entity FrameWork应该不会自动实现级联删除的。需要将他的关联数据全部加载进来

    你可以使用include将关联的数据加载进来。

    • 已标记为答案 曾祥展 2010年6月30日 6:58
    • 取消答案标记 曾祥展 2010年6月30日 10:11
    2010年6月30日 5:40
  • 我在数据库 关系里面 设置 删除规则为:层叠(级联)
    2010年6月30日 5:42
  • 你用的是存储过程做的级联删除吧?

    添加一条数据到多个表是什么意思,增加他的关联关系??

    如果是增加关联关系的话你可以使用导航属性赋值的

    2010年6月30日 7:07
  • 你用的是存储过程做的级联删除吧?

    不是 就是在sql2005 数据 表与表对应关联之间关系设置为  层叠
    2010年6月30日 10:54
  • 你要先删除对product的引用,比如表OrderItem里有一个到Product.Id的外键的话,需要将其设为空值对应。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 曾祥展 2010年7月1日 3:34
    2010年6月30日 19:59
    版主
  • 同意版主的思路!楼主可以依照版主的方法试试
    2010年7月1日 2:10