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 に答える