最初にEntity Framework 5コードとC#を使用してVS 2010を使用しており、Webアプリケーションを使用しています(したがって、エンティティが切断されています)。私は SQL クエリを直接操作することに慣れていますが、EF と最初にコードを作成するのは初めてです。
私は2つのクラスを持っています:
public class User
{
public int UserID {get; set;}
public string UserName { get; set; }
public bool IsSuspended { get; set; }
public int UnitID { get; set; }
public virtual MyTrust MyTrusts { get; set; }
}
public class MyTrust
{
public int MyTrustID { get; set; }
public string MyTrustName { get; set; }
public string Region { get; set; }
public bool DoNotUse { get; set; }
}
私の DbContext クラスには以下が含まれます:
public DbSet<MyTrust> MyTrust { get; set; }
public DbSet<User> Users { get; set; }
modelBuilder.Entity<User>()
.HasRequired(m => m.MyTrust);
MyTrust エンティティは変更されません。私が興味を持っているシナリオは 3 つあります。
- 既存の MyTrust を持つユーザーの追加
- 信頼を変更せずにユーザーを更新する
- 信頼の変更によるユーザーの更新
Web サイトがデータを返すとき、MyTrust オブジェクトには MyTrustID セットのみが含まれます。ユーザーを更新/追加すると、MyTrust レコードも更新されます。
明確化User オブジェクトの関係は更新されません。実際の MyTrust オブジェクトは、Web サイトから返されたデータで更新されます。ほとんどのフィールドが空であるため、オブジェクトが破損し、必要なユーザー レコードの更新が行われません。
実際、問題は関係の間違った終わりが更新されているという事実に要約されるようです。
簡単な解決策が見えない多くの例を見てきました。
誰でも簡単なパターンを提案できますか (SQL の時代はとても簡単でした)。
更新 User および MyTrust クラスに特定のキーを追加することでこれを解決しました。
public int NHSTrustID { get; set; }
MyTrust クラスの一致するキー。
振り返ってみると、質問は間違っていました。私はパターンではなく、特定の問題の解決策を求めていました。