我有这个对象:
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
来执行此操作。
答案 0 :(得分:1)
您可以使用扩展方法
.WillCascadeOnDelete(false);
对于特定关系,
或使用OneToManyCascadeDeleteConvention
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
This会向您展示更多细节(EF 4 CTP5,但应该很有价值)