私は、エンティティクラスTimecard
を持って、私はこの方法から、このエンティティを取得する:Entity Frameworkのは切り離さエンティティを保存していることに驚い正しく
public Timecard GetTimeCardForPerson(long timecardId)
{
return timecardContext.First(item => item.TimeCardId = timeCardId);
}
timecardContextはタイプTimecardContext: DbContext
です。
私は後でTimecard
エンティティに変更を加える、Timecard
エンティティは、プロパティを持っています
HashSet
に
Timecard's
コンストラクタで、初期化され
public virtual ICollection<TimecardRow> TimeCardRows { get; set; }
:私は追加
this.TimeCardRows = new HashSet<TimecardRow>();
子供TimecardRow
次に別のメソッドを呼び出し、これはその正確な実装で、GetTimeCardForPerson
:
public void SaveTimecard(Timecard timeCard)
{
timecardContext.Entry(timeCard).State = timeCard.TimecardId == 0
? EntityState.Added
: EntityState.Unchanged;
timecardContext.SaveChanges();
}
Timecard timeCard
引数で渡さtimecardContext
に取り付けられており、私はエントリ(timeCard.Stateが)EntityState.Unchanged
に設定されているように私の新しいTimecardRow
が正常に保存していることに驚いています> 0
TimecardIdを持っていません。
EntityState.Unchangedは、変更する必要がないことを私のtimecardContextに通知します。そうではありませんか?しかし、私が追加したTimecardRow
は、SaveTimecard
メソッドが呼び出されたときにデータベースに挿入されます。
タイムカードのインスタンスがGetTimeCardForPersonから返されているのは、後でSaveTimecardに変更して渡している同じインスタンスですか? – thudbutt
@thudbutt同じTimecardインスタンスです。ご協力ありがとうございます。 –