如果有关于删除的相关数据,如何抛出异常

时间:2013-01-23 17:29:52

标签: entity-framework

我有这个对象:

public class Profile
{
     public int Id {get;set;}
     public List<User> Users {get;set;}
}

我有一个删除个人资料的页面..所以如果没有用户相关我想删除个人资料..

我试过了:

var profile = _db.Profile
.Include(p => p.Users)
.SingleOrDefault(p => p.Id == id);

_db.Profile.Remove(profile);
_db.SaveChanges();

但这会自动删除所有相关的用户(我没有说明原因,因为我没有为此设置任何特殊配置。)

我该如何避免这种情况? 当我尝试SaveChanges时如何获得异常?

我希望避免直接在我的代码中检查Users.Count来执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以使用扩展方法

.WillCascadeOnDelete(false);

对于特定关系,

或使用OneToManyCascadeDeleteConvention

禁用所有删除级联
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)

    {
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
   }

This会向您展示更多细节(EF 4 CTP5,但应该很有价值)