首页 新闻 会员 周边

ef4.3 关闭级联删除出现异常 跪求帮助!

0
悬赏园豆:20 [已关闭问题] 关闭于 2014-11-10 12:16

//整体关闭外键级联删除
             modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
             modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 

还是单独 .WillCascadeOnDelete(false)

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

我不想级联删除导航属性的子表 怎么解决啊?

軒轅劍的主页 軒轅劍 | 初学一级 | 园豆:64
提问于:2012-10-31 17:21
< >
分享
所有回答(2)
0

删除表和表之间的关系

Meen | 园豆:321 (菜鸟二级) | 2012-11-01 10:23

数据库没建立外键关系,只是实体类里使用了virtual 导航属性,应该是ef默认约定字段名称相同的为外键字段

支持(0) 反对(0) 軒轅劍 | 园豆:64 (初学一级) | 2012-11-01 10:27

@軒轅劍: 

 using System.Data.Entity.ModelConfiguration.Conventions;



public class MyDbContext : DbContext
{
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();        
        }
}  
支持(0) 反对(0) Meen | 园豆:321 (菜鸟二级) | 2012-11-01 10:54
0

比如说

商品类 和 品牌类 做关联,商品类里有个品牌ID 外键关联到品牌类的主键,你把商品类里的品牌ID设置成可空就搞定

乐哈哈1 | 园豆:402 (菜鸟二级) | 2013-09-11 11:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册