1

私はEF Model Firstを使用しています。私のEmployeeクラスには、クラスとManager1対1の関係を持つプロパティがありますEmployee

public partial class Employee
{
    public Employee()
    {          
    }

    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual Employee Manager { get; set; }
}

ここで、データベースから既存のオブジェクトを取得し、マネージャーを次のように変更すると:

employee.Manager = otherEmployeeInstance;
Context.Entry(employee).State = System.Data.EntityState.Modified;
Context.SaveChanges();

問題なく動作します。ただし、マネージャーを削除したい場合、これは機能しません。

employee.Manager = null;

これにより機能するため、最初にマネージャー(従業員)インスタンスをコンテキストに「ロード」する必要があるように見えます。

var dummyVar = employee.Manager.Id;
employee.Manager = null;

問題は、関連オブジェクトを削除する最善の (適切な) 方法は何ですか?

4

1 に答える 1

2

明らかに、1 対 1 の関係のエンティティを削除する場合、EF では事前に準備せずにエンティティを削除することはできません。つまり、そのエンティティから依存エンティティ情報を削除します。私たちはリレーショナル データベース システムを使用しており、異常や障害の原因となる調整なしで関係を壊すことを忘れないでください。リレーションを削除したい場合は、コントローラーでこれを使用できます。

employee.Remove(Manager);//Automatically Removes Navigational Properties at both entities
db.SaveChanges();

これの代わりに :

employee.Manager = null;
于 2012-12-09T04:43:38.513 に答える