考虑以下代码:
// 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()
. 这将是对数据库的两个单独的查询,对吧?我怎样才能将其限制为一个?
现在,考虑以下代码:
adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;
db.SubmitChanges();
使用 LINQ/EF,我可以访问彼此有关系的不同实体。但是,每次我这样做时,这不会导致对数据库的多次调用吗? 例如,这三个都是对数据库的单独调用吗?
adj.isPropertyAdjuster = user.SomeEntity.someProperty;
adj.isCasualityLiabilityAdjuster = user.SomeEntity.someProperty;
adj.isLargeLossAdjuster = user.SomeEntity.someProperty;
如何将其限制为对数据库的单个调用?我认为唯一的方法是像这样实例化一个对象:
SomeEntity obj = user.SomeEntity;
然后像这样调用属性:
adj.isPropertyAdjuster = obj.someProperty;
你觉得呢?你有没有什么想法?