2012-01-09 12 views
1

私はSupplierエンティティを持っています。各Supplierオブジェクトは別のSupplierオブジェクトをその「親」として参照します。Entity Framework 4.1コードファースト - 2つのエンティティ間の関係を削除できません

public class Supplier 
{ 
    public int? Id { get; set; } 

    public virtual Supplier Parent { get; set; } 
} 

このサプライヤには親が存在しないため、関係を削除しようとするまで、これはすべて正常に動作します。私はnullから特定のサプライヤに変更することができ、別のサプライヤに設定することはできますが、nullに設定することはSaveChanges()の後も保持されません。

supplier.Parent = null; 

サプライヤテーブルの外部キー 'ParentId'は、NULL可能として設定されています。関係を明示的に定義することは役に立たない。

modelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany(); 

私には明らかなものがありません。代わりにちょうどmodelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany();

答えて

3

何であるかわかりません。

// Must access property (trigger lazy-loading) before we can set it to null (Entity Framework bug!!!) 
var colour = modelItem.Colour; 
modelItem.Colour = null; 

新しいコードでも同じことがすべて実行されました。

1

使用し、次のmodelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany().HasForeignKey(x=>x.ParentId); それ以外の場合は、外部キーの名前は、ちょうど私が(作品)まったく同じことを行う私のコード内の別の場所を発見し、これを見つけた

+0

外部キーのプロパティを使用していません。つまり、ParentId – SeeNoWeevil

+0

何か良い理由はありますか? –

+0

私は同じ問題を抱えていましたが、Stephenは正しいです。あなたは外部キーを定義する必要があります。以下のArthur Vickersの記事を参照してください。http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/35e7438b-ec1f-4d1f-bca0-539ccfb9abb1/ – Marthijn

関連する問題