Нулевые данные возвращаются с использованием модели 1: 1 - PullRequest
0 голосов
/ 03 июня 2019

У меня есть две таблицы SQL, User и UserType, объединенные с UserType в качестве внешнего ключа, с соответствующими моделями в ASP. Насколько я понимаю, это должны быть отношения 1: 1 (поправьте меня, если я ошибаюсь). Один уникальный пользователь, установленный как тип пользователя (администратор, супер администратор, пользователь и т. Д.).

Когда я пытаюсь получить список пользователей, он возвращает нулевое значение в свойстве UserType.

Я использовал Google, чтобы добиться этого, но я изо всех сил пытаюсь решить эту конкретную проблему.

В какой-то момент я получил сообщение об ошибке: «Невозможно определить основной конец ассоциации». Чтобы обойти это, я включил аннотацию Required (не сработало) и аннотацию ForeignKey (тоже не сработала) в обеих моделях, одновременно и по отдельности.

Это то, что я имею до сих пор.

[Table("Users", Schema = "dbo")]
public class Users
{
    [Key, ForeignKey("UserType")]
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ContactNumber { get; set; }
    public UserType UserType { get; set; }
    public string IsActive { get; set; }
}

[Table("UserType", Schema = "dbo")]
public class UserType
{
    [Key]
    public Guid Id { get; set; }
    public string Type { get; set; }
    public string Description { get; set; }
    public string IsActive { get; set; }
    public Users Users { get; set; }
}

Я использую приведенный ниже метод LINQ для извлечения данных:

public PagedTables<Users> GetAllUsers(Pagination pagination)
{
    using (var db = new DbContext())
    {
        var user = new PagedTables<Users>()
        {
            Data = db.Users.OrderBy(U => U.Id).Skip(pagination.Page).Take(pagination.Limit).ToList(),
            Count = db.Users.Count()
        };

        return user;
    }
}

Точка останова для var пользователя показывает, что свойство UserType возвращает значение NULL. Я ожидаю, что назначенный тип пользователя будет присоединен к пользователю.

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 04 июня 2019

Мой фон EF является базой данных в первую очередь, но если вы стремитесь к загрузке (т. Е. Не ленивой загрузке), то вам не хватает Включить , чтобы сказать LINQ пойти и получить UserType? Что-то вроде;

Data = db.Users.OrderBy(U => U.Id).Skip(pagination.Page).Take(pagination.Limit).Include(U => U.UserType).ToList(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...