次のコードを検討してください。
// check record exists
Adjuster adj = new Adjuster();
if (db.Adjusters.Where(x => x.userID == user.id).Any())
{
adj = db.Adjusters.Where(x => x.userID == user.id).FirstOrDefault();
}
else
{
// create adjuster record
adj.id = Guid.NewGuid();
adj.userID = user.id;
db.Adjusters.InsertOnSubmit(adj);
}
.Any()
最初に を呼び出し、次に を呼び出す方法に注意してください.FirstOrDefault()
。これは、データベースに対する 2 つの別個のクエリになりますよね? これを1つだけに制限するにはどうすればよいですか?
ここで、次のコードを検討してください。
adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;
db.SubmitChanges();
LINQ/EF を使用して、相互に関係を持つさまざまなエンティティにアクセスできます。しかし、これを行うたびに、データベースへの複数の呼び出しが発生しませんか? たとえば、これら 3 つのすべてがデータベースへの別個の呼び出しですか?
adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;
これをデータベースへの単一の呼び出しに制限するにはどうすればよいですか? 唯一の方法は、次のようにオブジェクトをインスタンス化することだと思います。
SomeEntity obj = user.SomeEntity;
そして、次のようにプロパティを呼び出します。
adj.isPropertyAdjuster = obj.someProperty;
あなたの考えは何ですか?