簡體   English   中英

ASP.Net實體框架

[英]ASP.Net Entity Framework

我是在第一次嘗試使用ORM框架時才嘗試使用ASP.Net Entity框架,所以請耐心等待。

為了簡化問題,我有以下兩個表

日歷

CalendarID用戶ID日期EventName

用戶

UserId用戶名

我已經將它們添加到我的實體框架模型中,並在表之間建立了鏈接。 然后,我可以使用以下方法從MVC視圖中顯示日歷列表:

  • <%= calendarEntry.DateAdded%>
  • 但是如果我嘗試使用

  • > <%= calendarEntry.Users.Username%>:<%= calendarEntry.DataAdded%>

    它落在對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.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM