none
關於 edmx(Entity FrameWork) 導覽屬性的問題 RRS feed

  • 問題

  • 你好,我的 edmx 中有 Role , ActionGroup 兩個資料表,但是在同一個資料庫中有 Role , ActionGroup , ActionGroupRole 三個實體資料表。
    在 Role 資料表中有一個 [ActionGroup] 的導覽屬性,在屬性視窗中關聯到 ActionGroupRole,如下圖所示。

    這三個表的大致關係是,Role(角色) 和 ActionGroup(程式群組) 之間是透過 ActionGroupRole(角色程式群組) 中來作對應的。
    但是如圖中所表示的,ActionGroup 並沒有直接和 Role 作外鍵的欄位,而是透過導覽屬性(ActionGroup.Role <->Role.ActionGroup)來作表示。
    而點選 Role 中的導覽屬性 ActionGroup,在圖中屬性視窗卻出現關聯是 ActionGroupRole。

    ActionGroupRole 資料表有兩個欄位分別是 ActionGroup_ID 和 Role_ID , 用來映對 ActionGroup_ID 和 Role_ID 之間的關係。

    我現在遇到的問題是,當我在 Role , ActionGroup , ActionGroupRole 都有對應正確的資料列,但是在應用程式中卻無法透過Role的ID欄位完整取得ActionGroup,
    有部分的 ActionGroup 可以透過  Role 的 ID 欄位取得。

    我確定 在這三個資料表中的ActionGroup_ID , Role_ID 資料都正確,但是就是有我上述的問題發生。

    這個問題跟導覽屬性有關係嗎?

    有人知道這個問題該朝哪個方向解決?

    感謝回覆。

    • 已編輯 Arthur1977 2014年3月28日 上午 02:38
    • 已移動 ricoisme 2014年4月2日 下午 01:45 非SQL Server本身問題
    2014年3月28日 上午 02:37

所有回覆

  • 但是在應用程式中卻無法透過Role的ID欄位完整取得ActionGroup,有部分的 ActionGroup 可以透過  Role 的 ID 欄位取得。

    程式碼呢?


    <p>理直氣和,切記。</p> <p><a href="http://blog.kkbruce.net/2013/12/mva-microsoftvirtualacademy-free-online-it-training-for-zh-tw-chinese.html" target="_blank" title="微軟免費中文影音線上教學網站">微軟免費中文影音線上教學網站</a></p> <dl><dt>個人 </dt><dd> <ul> <ul> <li>Blog:<a href="http://blog.kkbruce.net" target="_blank" title="KingKong Bruce記事">KingKong Bruce記事</a> </li><li>Web:<a href="http://kkbruce.tw" target="_blank" title="kkbruce.tw">KKBruce.tw</a> </li><li>G&#43;:<a href="gplus.to/kkbruce">Google&#43;專頁</a> </li></ul> <dt>社群 </dt><dd> <ul> <li><a href="http://mvc.tw">twMVC</a> </li><li><a href="http://study4.tw">Study4</a></li></ul> </dd></ul> </dd></dl>

    2014年3月28日 上午 02:53
  • 你好,我把相關程式碼列出如下:

    //根據角色對應的分組
                var groups = from n in userRoleList
                             from g in n.ActionGroup
                             select g;
    
                //獲取選中的是菜單項的選擇
                short actionTypeMenu = (short)ActionTypeEnum.MenuItem;
    
                //實現過濾重複的數據,引用不同
                //默認的就是引用類型,對比的時候用的是引用類型,如果我們不想使用引用地址,而人為指定表的屬性,那麼可以自己寫一個比較起,重寫Equals和GethashCode方法就行了
                groups.Distinct(new EntityCompare());
    
                //把所有的信息封裝MenuData數據傳遞給控制器,Json格式
                
                var menuData = from g in groups
                               select new MenuData()
                               {
                                   GroupID = g.ID,
                                   GroupName = g.GroupName,
                                   MenuItems = (from a in g.ActionInfo
                                                where a.ActionType == actionTypeMenu
                                                select new MenuItem
                                                {
                                                    Id = a.ID,
                                                    MenuName = a.ActionName,
                                                    Url = a.RequestUrl
                                                })
                               };
                
                return menuData.AsQueryable();

    menuData 丟到頁面上的時候,用 javascript alert() 出來就是沒有某幾筆資料。

    我發現在  groups 裡就沒有某幾筆資料了。

    2014年3月28日 上午 07:30