Entity Framework возвращает нулевое значение связанных таблиц при использовании хранимой процедурыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Entity Framework возвращает нулевое значение связанных таблиц при использовании хранимой процедуры

Сообщение Anonymous »

Я использую подход «сначала код» в EF, я создал хранимую процедуру для выбора, и когда я запускаю ее, я получаю значение из таблицы User, но атрибуты FK имеют значение null.
Это моя хранимая процедура:

Код: Выделить всё

ALTER PROCEDURE rsm_Select
@Id [int]
AS
BEGIN
SET NOCOUNT ON;

SELECT
u.*, p.*, ut.*
FROM
Users u
LEFT JOIN
UserProfiles p ON u.userProfile_Id = p.Id
LEFT JOIN
UserTypes ut ON u.UserType_Id = ut.Id
WHERE
u.Id = @Id;
END
У меня есть три класса (

Код: Выделить всё

User, UserProfile, UserType
):

Код: Выделить всё

Public class User
{
public int Id { set; get; }
public string U_UserName { set; get; }
public string U_UserPass { set; get; }
public string U_Accountstat { set; get; }

public virtual UserProfile UserProfile_Id { set; get; }
public virtual UserType Usertype_Id { set; get; }
}

public class Admin : User
{
//...
}

public class SuperAdmin : Admin
{
//...
}

public Class UserType
{
public int Id { set; get; }
public string TypeName { set; get; }
}

public class UserProfile
{
public int Id { set; get; }
public string UFirstName { set; get; }
public string ULastName { set; get; }
public string UContact { set; get; }

public virtual User U_Id { set; get; }
}
Это классы, которые я использовал, и в соответствии с ними таблицы будут созданы в БД.
В таблице User ProfileID и UserTypeId являются внешними ключами.
СЕЙЧАС
Когда я пытаюсь выполнить хранимой процедуре, я получу значение NULL в UserProfile_ID и UserType_ID.
Вот как я ее запускаю:

Код: Выделить всё

void Select(int userId)
{
using (var context = new myCodeFirstApproach())
{
var Result = context.Database
.SqlQuery("EXEC rsm_Select @Id", new SqlParameter("@Id", userId))
.ToList();
}
}
При отладке результата я получаю нулевое значение для UserProfile_Id и UserType_Id, но получаю значения в других полях, таких как U_UserName, U_UserPass< /code>, U_Accountstat.
Когда я запускаю хранимую процедуру в SQL Server Management Studio, она возвращает правильный результат, но не в моем коде.
Что здесь не так?
PS: все остальные хранимые процедуры для обновления, удаления и создания работают нормально.
Я пытаюсь изменить хранимая процедура, но результат тот же

Подробнее здесь: https://stackoverflow.com/questions/776 ... ored-proce
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»