0
我正在嘗試執行左外部連接。它似乎工作正常,但我的朋友表爲空時出現問題。左外部連接實體框架獲取錯誤無法創建空常量
例如Users表具有與Table Friends(id)列相關的外鍵(friendId)。
雖然有時我的用戶將不與朋友聯繫,所以我得到這個錯誤: 無法創建類型的空恆定值「PandaBrew.Models.FriendModel」
如何處理呢?
回購代碼:
var authUser = (from u in db.Users
join f in db.Friends on u.FriendId equals f.Id into jointable
from j in jointable.DefaultIfEmpty()
where u.EmailAddress == user.EmailAddress
select new UserModel
{
Id = u.Id,
CreatedOn = u.CreatedOn,
EmailAddress = u.EmailAddress,
FriendId = u.FriendId,
RoleId = u.RoleId,
PasswordHash = u.PasswordHash,
Friend = u.FriendId != null ? new FriendModel()
{
Alias = j.Alias,
CarrierId = j.Id,
CreatedOn = j.CreatedOn,
FirstName = j.FirstName,
Id = j.Id,
LastName = j.LastName,
Locked = j.Locked,
PhoneNumber = j.PhoneNumber,
SteamId = j.SteamId,
} : null,
}).SingleOrDefault();
我想朋友設置爲空時,有沒有friendId,但它無法正常工作。
我通常解決此問題,通過(在這種情況下)創建一個空的FriendModel而不是零和然後檢查(並可能將Friend設置爲null)。這不是你的代碼的問題,這是EF的問題。 – Mark
嗯,你能告訴我你的意思嗎?因爲當我將它設置爲空時,我仍然收到錯誤。 – allencoded
它是最簡單的形式,我的意思是:Friend = u.FriendId!= null?新的FriendModel(){...}:new FriendModel(),然後執行類似「if(authUser.Friend.Id == 0)authUser.Friend = null」的操作。 – Mark