EntityFramework、コードの最初の解決策。アイテムの親と兄弟をメモリにロードせずにリポジトリにアイテムを追加する方法
私の 'リポジトリ'
public abstract class BaseEfDataRepository : DbContext
{
public IDbSet<Account> Accounts { get; set; }
}
Account
が、私はLINQのツーエンティティ、全体Account
オブジェクトをロードせずに使用して、Account
に新しいUser
を追加することができますどのように
public virtual List<User> Users { get; private set; }
ですか少なくともUsers
の全部を読み込まずに。
私は通常のようにそれを行う:
var account = context.Accounts.FirstOrDefault(acc => acc.Id == accountId);
account.Users.Add(newUser);
context.Save();
が、私はこれは私が避けたいメモリにセット全体をロードすることに気付きました。
可能ですか?私の選択肢は何ですか?私は考えることができます: Users
をDbContext
に公開し、そこからユーザーを追加します。しかし、これは私のために他のすべての種類の問題を引き起こすでしょう。
他のオプションはありますか?
あなたのコンテキストは明らかにマップされたクラスとして 'User'を知っています。 'IDbSet'を追加することで、あなたが直面する問題*の種類を理解できません。最も簡単な方法は、ユーザーを追加して、そのプロパティを持っている場合は、 'AccountId'を設定することです。 –
@GertArnold、まあ、1つのために、 'AccountId'プロパティはプライベートセッターを持っていて、私はそれをそのままにしておきたいと思います。 –