第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 MVC 中使用 DB First 方法從 Junction Table 獲取數(shù)據(jù)

如何在 MVC 中使用 DB First 方法從 Junction Table 獲取數(shù)據(jù)

C#
胡說叔叔 2022-12-04 13:06:56
我有 2 個表之間的多對多關系,我想從聯(lián)結表中檢索數(shù)據(jù)。我先分享一些資源數(shù)據(jù)庫表的圖像:https://imgur.com/BDvPiQaEF 模型實體的圖像:https://imgur.com/mFHPjfN調(diào)試時的錯誤圖像:https://imgur.com/lL7DE72我正在使用以下規(guī)則或策略+數(shù)據(jù)庫優(yōu)先方法+EF圖+自定義角色提供者問題是,當我嘗試從連接表 (user_has_role) 檢索數(shù)據(jù)時,我得到的是 SQL 查詢而不是數(shù)據(jù)。###我得到的 SQL 查詢:選擇 \r\n [Extent1].[user_id] AS [user_id],\r\n [Extent2].[user_role_name] AS [user_role_name]\r\n FROM [dbo].[user_has_role] AS [Extent1]\r \n INNER JOIN [dbo].[user_role] AS [Extent2] ON [Extent1].[user_role_id] = [Extent2].[user_role_id]這是一些代碼角色提供者類派生自 RoleProvider 類public class AppRolesProvider : RoleProvider所有方法都被覆蓋但僅與public override string[] GetRolesForUser(string username)        {            //get all user data from user table for id based on user email            var _user = db.users.Where(u => u.user_email == username).FirstOrDefault();           var _role = (from s in db.users                         where (                           from c in s.user_role                           where s.user_id == _user.user_id                           select c                           ).Any()                         select s).ToString();            string[] roleName = { _role };               if (roleName != null)            {                return roleName;            }            else            {                roleName = null;                return roleName;            }        }我想要針對用戶的實際角色名稱(一個用戶有很多角色,也可能只有一個)
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

聯(lián)結表未包含在 Entity Framework 中,因為它沒有主鍵。您通過向聯(lián)結表添加主鍵然后更新您的 Edmx 文件來解決此問題。


更新模型后,您可以使用簡單的 linq 查詢從聯(lián)結表中檢索數(shù)據(jù)。


兩種情況的區(qū)別:


1) 如果您的聯(lián)結表不包含主鍵,EF 將生成具有多對多關系的兩個類

2) 如果您的聯(lián)結表包含主鍵,EF 將生成 3 個類: Junction table in one to many relation with用戶和具有 user_role 的一對多


更新

請試試這個:


public override string[] GetRolesForUser(string username)

    {

        //get all user data from user table for id based on user email

        int _user_id = Convert.ToInt32(db.users.Where(u => u.user_email == username).Select(i => i.user_id).FirstOrDefault());


        // Get role from user_has_role against user id

        var _role = db.user_has_role.Where(r => r.user_id == _user_id).Select(r => r.user_role.user_role_name);


        // store selected

        string[] roleName = _role.ToArray();


        if (roleName != null)

        {

            return roleName;

        }

        else

        {

            roleName = null;

            return roleName;

        }

    }


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號