Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.08.2017
Сообщений: 5

Получение обьекта через Database.SqlQuery<class>

19.08.2017, 19:29. Показов 1987. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.

Подскажите пожалуйста в следующем вопросе:

Есть простой пример БД которая состоит из двух таблиц - User, Car.
Есть сопоставление, что каждый User имеет свойство Car.

По данному примеру было написано обычное MVC веб-приложение используя методику CodeFirst.

Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
[Table("User", Schema = "usr")]
public class User
{
    [Key]
    public int UserID { get; private set; }
    public string FirstName { get; private set; }
    public string SecondName { get; private set; }
    [ForeignKey("Car")]
    public int CarID { get; private set; }
    public virtual Car Car { get; private set; }
}
C#
1
2
3
4
5
6
7
[Table("Car", Schema = "usr")]
    public class Car
    {
        [Key]
        public int CarID { get; private set; }
        public string Name { get; private set; }
    }
При использование EF я с легкостью могу получить обьекты User из Database SQL, в свойствах которого есть уже обьект Car который подтянуть благодаря атрибуту [ForeignKey("Car")].

C#
1
var user = Context.Users.FirstOrDefault();
Но к сожалению при попытке получить аналогичным способом обьект User через хранимую процедуру свойство Car обьекта User всегда null...

C#
1
var userFromProc = Context.Database.SqlQuery<User>("usr.GetFirstUser").FirstOrDefault(); // Stored proc
SQL
1
2
3
4
5
6
CREATE PROC [usr].[GetFirstUser]
AS
SELECT u.UserID, u.FirstName, u.SecondName, u.CarID, c.CarID AS [Car.CarID],c.Name AS [Car.Name]
FROM usr.[USER] u
INNER JOIN usr.Car c ON u.CarId = c.CarId 
GO
Как сделать так что бы при получении пользователя User через процедуру свойство Car также подтянулось?

Навыков работы с EF у меня мало, так что не судите по коду, или по вопросам.
Буду рад прочитать любые ваши советы как по данному вопросу, так и с чего начинать изучение EF и MVC.

Проект есть на GitHub, буду рад поделится ссылкой.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2017, 19:29
Ответы с готовыми решениями:

Cannot determine embedded database driver class for database type NONE
Подскажите, что делать с этой гадостью. Был рабочий сайт все полностью работало, было даже несколько версий по обновлению. Теперь во...

class Database
Всем привет !!! :) у меня такой вопрос, есть класс Database с созданами в нем функциями: function insert($tableName, $arValues) { ...

Не могу добавить строку в таблицу через SqlQuery
Всем доброго времени суток. Пытаюсь добавить поле в таблицу sqlite (sqlQuery2.append или insert). Но выдаёт ошибку. см Скриншот. ...

3
0 / 0 / 0
Регистрация: 01.08.2017
Сообщений: 5
23.08.2017, 22:36  [ТС]
Вообще нет тех кто может подсказать...?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
23.08.2017, 23:35
zzim4ik, вам бы почитать теорию, а потом уже пытаться программировать. Ваша хранимка не возвращает ни First, ни User. Написать можно было например так:
SQL
1
2
3
4
CREATE PROC [usr].[GetFirstUser]
AS
SELECT top 1 * FROM usr.[USER]
GO
0
0 / 0 / 0
Регистрация: 01.08.2017
Сообщений: 5
23.08.2017, 23:39  [ТС]
Igr_ok Омг, процедура у меня возвращает просто напросто результаты запроса, а уже с помощью метода .FirstOrDefault() он уже дает первый обьект.

И да, маппинг обьекта User проходит успешно, но инстанс Car всегда равен null
От "TOP 1" толку ноль - FirstOrDefault() в помощь

Посмотрите на код, на свойства класса User, и потом на запрос.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2017, 23:39
Помогаю со студенческими работами здесь

Получение id еще не сохраненного обьекта
Добрый день. Есть форма, отправляет POST запросом данные (project) в контроллер. public ActionResult AddProject(Project...

Существование обьекта и получение ссылки
Доброго времени суток. Есть приложение, в котором вызываются dll(№1). В приложении подключена dll(№2) с определённым классом реализованным...

SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type)
Здравствуйте! помогите понять почему подчеркивает DataBase db; пишет (DataBase cannot be resolved to a type), чем это можно исправить ...

Получение элемента из списка List<class>
Здравствуйте подскажите как вывести элемент из списка ( выполнить элегантно задачу не получается ). список List&lt;stack&gt;...

Установка DBGrid columns при выводе через запрос SQLquery (обычный вывод в editing DBGrid Columns все настраивается)
procedure TForm1.Button33Click(Sender: TObject); //Кнопка Все вывести begin sqlquery2.Active:=FALSE; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru