[英]ASP.Net Entity Framework
我是在第一次嘗試使用ORM框架時才嘗試使用ASP.Net Entity框架,所以請耐心等待。
為了簡化問題,我有以下兩個表
CalendarID用戶ID日期EventName
UserId用戶名
我已經將它們添加到我的實體框架模型中,並在表之間建立了鏈接。 然后,我可以使用以下方法從MVC視圖中顯示日歷列表:
但是如果我嘗試使用
它落在對calendarEntry.Users的調用上,因為它說它為null。 為什么實體框架不了解使用細節? 我需要在模型設計師中進行更改嗎?
如果它有助於將數據發送到視圖的MVC控制器中的代碼是這樣的
var Entities = new UnityGamersEntities(); 返回View(Entities.Calendar);
真的希望這是有道理的。
對於有興趣的人,我使用以下代碼解決了這個問題
UnityGamersEntities db2 = new UnityGamersEntities();
ObjectQuery<GameCalendar> gc = db2.GameCalendar.Include("GameTitles");
似乎確實缺少有關實體框架的教程,除非您只想使用單個表,否則我發現很難找到所需的信息。
希望這將在未來幾個月內改變。
GAV,
還有另一種方法可以使Linq to Entities填充Users表。
每個外鍵和集合上都有一個“加載”方法,該方法將轉到數據庫,並且在您的情況下,將獲取鏈接到當前日歷的用戶列表並填充集合。 這有點像延遲加載。
如果要添加此行,它應該可以工作:
<!-- Load up Users unless it's already Loaded -->
<% if(!calendarEntry.Users.IsLoaded) calendarEntry.Users.Load(); %>
<!-- Your Line -->
<%= calendarEntry.Users.Username%> : <%= calendarEntry.DataAdded %>
希望能幫助到你。
PS-我聽說您缺少文檔
狡猾
您需要告訴實體框架為日歷加載用戶。
您可以通過LINQ查詢執行此操作,只需:
Calendar cal = (from c in Calendar
where c.CalendarID.Equals(input)
select new
{
c,
c.Users
}).FirstOrDefault().c;
也就是說,加載日歷及其所有用戶。
編輯:可能還有其他方式來加載用戶,這只是LINQ方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.