0

我有这个对象:

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直接在我的代码中检查来做到这一点。

4

1 回答 1

1

你可以使用扩展方法

.WillCascadeOnDelete(false);

对于特定的关系,

或禁用所有删除级联OneToManyCascadeDeleteConvention

protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)

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

将向您显示更多详细信息(EF 4 CTP5,但应该很有价值)

于 2013-01-23T17:46:49.147 回答