2015-06-27 106 views
1

在1個DB調用中執行此操作的最佳方法是什麼?減少數據庫調用

if (dbContext.Owners.Any(i => i.Value == dog.OwnerID)) //Check if owner exists in db 
{ 
    //Assign the owner's contact number to the dog entry 
    dbDog.OwnerContactNumber = dbContext.Owners.First(i => i.Value == dog.OwnerID).ContactNumber; 
} 

我的想法:

Owner owner = dbContext.Owners.FirstOrDefault(i => i.Value == dog.OwnerID); //Get the owner 
if (owner) 
{ 
    dbDog.OwnerContactNumber = owner.ContactNumber; //Assign the contact number 
} 

但不得不宣佈額外的所有者變量,感覺不好。而且我有一堆這些if語句,所以我將不得不創建一堆額外的不需要的所有者變量。

我該如何做得更好?

回答

2

您只需檢查數據庫中是否有所有者的ContactNumber,而不是整個所有者,因爲您沒有更新它。你甚至可以做到這一點,而不使用「不必要」的變量:

dbDog.OwnerContactNumber = 
    dbContext.Owners 
       .Where(i => i.Value == dog.OwnerID) 
       .Select(o => o.ContactNumber) 
       .FirstOrDefault() ?? dbDog.OwnerContactNumber; 

所以,如果沒有業主號被發現,不會發生變化。

+0

完美,謝謝! :) – Pierre