0
不確定如何描述此問題。實體框架權限加入以填充用戶設置
這裏是例子:
我有一個實體作爲Tour。遊覽表包含靜態3行(未來可能更多)。
public class Tour
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
}
每個用戶都可以打開這個選項鍵。
所以我有另一個名爲UserTourSetting的表來存儲用戶選項。
public class UserTourSetting
{
public int Id { get; set; }
public int UserId { get; set; }
public int TourId { get; set; }
public bool Enabled { get; set; }
public ApplicationUser User { get; set; }
public Tour Tour { get; set; }
}
當用戶加載頁面應該經常看到3行與開啓或關閉狀態。
當我加載UserTourSetting表我沒有得到任何結果,因爲沒有記錄又在桌子上的用戶第一次。我想我需要加入Tour table,並且還包括Tour結果,因爲我需要冠軍。
當開關關閉時,單獨添加新記錄(如果不存在)或更改啓用密鑰(如果存在)。
用EF實現這個最好的方法是什麼?我努力生成linq語句來加載連接表。
這裏是我試過的方法:
public IEnumerable<UserTourSetting> GetUserTourSettings(int userId)
{
var q = from tour in DbContext.Tours
join uts in DbContext.UserTourSettings
on tour.Id equals uts.TourId
where uts.UserId == userId
select uts;
return q;
}
但它不工作。我無法訪問巡迴賽名稱。包含哪裏可以進入此查詢?
謝謝,
你是什麼意思_it不WORK_?方法不會返回值,或者您無法訪問Tour.Name。對我來說它應該工作:'var firstUserTourSettingsName = GetUserTourSettings(1).First()。Tour.Name' –
SELECT [Extent1]。[Id] AS [Id], [Extent1]。[UserId] AS [UserId] , [Extent1] [TourId] AS [TourId], [Extent1]。[有效] AS [有效] FROM [DBO]。[UserTourSettings] AS [Extent1] WHERE [Extent1]。[用戶Id] = @ p__linq__0這是生成的腳本 – akd
生成的腳本是一回事,但您需要的數據是不同的。你甚至嘗試從'UserTourSetting.Tour.Name'獲取名字嗎? –