2013-01-23 71 views
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来做到这一点。

+1

数据库首先?代码优先? –

+0

对不起,它是Code First。 – MuriloKunze

+1

,对不起,哪个版本的ef? –

回答

1

可以使用扩展方法

.WillCascadeOnDelete(false); 

特定关系,

或禁用所有删除级联与OneToManyCascadeDeleteConvention

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

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

This会告诉你一些更多的细节(EF 4 CTP5,但应该是有价值的)

+0

@MuriloKunze不用客气;) –

相关问题