Member 10020252 Ответов: 0

Как реализовать метод отображения данных нескольких таблиц с помощью ADO.NET в MVC5


Я хочу отобразить данные из нескольких реляционных таблиц БД, но это работает неправильно... Пожалуйста, помогите мне найти это...

заранее спасибо...

Вот Мой Метод Класса Репозитория

// Method For Display All Records
    public List<advertisement> getAll()
    {
        List<advertisement> List = new List<advertisement>();
        try
        {
            SqlCommand cmd = new SqlCommand("sp_advertisement_display_all", connection);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();

            connection.Open();
            da.Fill(dt);
            connection.Close();

            List = (from DataRow dr in dt.Rows
                    select new advertisement
                    {
                        adsId = Convert.ToInt32(dr["adsId"]),
                        adsImgPath = Convert.ToString(dr["adsImgPath"]),
                        adsTypeId = Convert.ToInt32(dr["adsTypeId"]),
                        adsStartDate = Convert.ToDateTime(dr["adsStartDate"]),
                        adsExpiryDate = Convert.ToDateTime(dr["adsExpiryDate"]),
                        adsPostBy = Convert.ToInt32(dr["adsPostBy"]),
                        adsDeactivateBy = Convert.ToInt32(dr["adsDeactivateBy"]),
                        clientId = Convert.ToInt32(dr["clientId"]),

                        client = new client 
                        {
                            clientId = Convert.ToInt32(dr["clientId"]),
                            clientEmail = Convert.ToString(dr["clientEmail"]),
                        },

                        masterUser = new masterUser   // AdsPostBy & adsDeactivateBy
                        {
                            mUserId = Convert.ToInt32(dr["mUserId"]),
                            mUserEmail = Convert.ToString(dr["mUserEmail"]),
                        },

                        adsType = new adsType 
                        {
                            adsTypeId = Convert.ToInt32(dr["adsTypeId"]),
                            adsTypeName = Convert.ToString(dr["adsTypeName"])
                        }

                    }).ToList();
            return List;
        }
        catch
        {
            connection.Close();
            return List;
        }
        finally
        {
            connection.Close();
        }
    }


Вот Мой Метод Контроллера

//Display All Records
    [Authorize(Roles = "Master, Admin")]
    public ActionResult Display()
    {
        if (Session["UserId"] != null)
        {
            if (Session["UserRole"].ToString() == "Master" || Session["UserRole"].ToString() == "Admin" || Session["UserRole"].ToString() == "Agent" || Session["UserRole"].ToString() == "Accountant" || Session["UserRole"].ToString() == "Developer")
            {
                return View(repObj.getAll());
            }
            else
            {
                TempData["Access"] = "Not Allow";
                return RedirectToAction("Display");
            }
        }
        else
        {
            TempData["Session"] = "Not Login";
            return RedirectToAction("Login", "Login", "MasterUserLogin");
        }
    }


Вот Запрос, Хранимая Процедура

SELECT advertisement.*, adsType.*, client.*, masterUser.* FROM advertisement  
INNER JOIN adsType ON advertisement.adsTypeId = adsType.adsTypeId 
INNER JOIN client ON advertisement.clientId = client.clientId 
INNER JOIN masterUser ON advertisement.adsPostBy = masterUser.mUserId 
OR advertisement.adsDeactivateBy = masterUser.mUserId;



Запрос возвращает все данные в порядке..... Это не дает мне никакой ошибки, но никаких данных не возвращает.....
код не входил в цикл WHILE....

Что я уже пробовал:

Как реализовать метод отображения данных нескольких таблиц с помощью ADO.NET в MVC5

F-ES Sitecore

Код выглядит так, что проблема в другом. Помните, что мы не можем запустить ваш код для вас, изучить ваши переменные, получить доступ к вашей базе данных и т. д., Поэтому вам придется научиться отлаживать эти проблемы. Может быть, строка соединения не указывает на нужное место? Может быть, другой SQL работает именно так, как вы думаете. Может быть, у вас просто нет данных, чтобы удовлетворить запрос? Используйте SQL Profiler, чтобы точно увидеть, что выполняется в вашей базе данных, и используйте SQL Management Studio, чтобы выполнить тот же SQL и посмотреть, появится ли что-нибудь на свет.

Однако я скажу одну вещь: если вы выберете * из всех ваших таблиц и ваш код запросит "clientid", то как узнать, на какое поле clientid вы ссылаетесь? Перепишите свой SP, чтобы выбрать только те поля, которые вас интересуют.

0 Ответов