Как заставить поле поиска работать в этом случае без определения внешнего ключа в базе данных? - PullRequest
0 голосов
/ 15 апреля 2020

Код выглядит следующим образом (сначала база данных):

CREATE TABLE [dbo].[Users] 
(
    [Id] [uniqueidentifier] default newid() NOT NULL,
    [Name] [varchar](50) NOT NULL,
    [Description] [varchar](50) NOT NULL,
    [UserTypeId] [int] NULL,
);

CREATE TABLE [dbo].[UserTypes] 
(
    [Id] [int] NOT NULL,
    [Name] [varchar](50) NOT NULL,
    [Description] [varchar](50) NOT NULL
);

INSERT INTO [dbo].[UserTypes] ([Id], [Name], [Description]) 
VALUES (1, 'Name1', 'Descr1');
INSERT INTO [dbo].[UserTypes] ([Id], [Name], [Description]) 
VALUES (2, 'Name2', 'Descr2');

INSERT INTO [dbo].[Users] ([Id], [Name], [Description], [UserTypeId]) 
VALUES (newid(), 'User1', 'Descr1', 1);
INSERT INTO [dbo].[Users] ([Id], [Name], [Description], [UserTypeId]) 
VALUES (newid(), 'User2', 'Descr2', 2);

C# код:

[Table("Users")]
public class User
{
    [Key]
    public Guid Id { get; set; }

    public string Name { get; set; }

    [ForeignKey(nameof(UserType))]
    public int UserTypeId { get; set; }

    public UserType UserType { get; set; }
}

[Table("UserTypes")]
public class UserType
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }
}

UserTypeId сопоставлен, UserType нет. Есть идеи как заставить это работать?

1 Ответ

1 голос
/ 15 апреля 2020

Если мы рассматриваем это как отношение один ко многим. Тогда отображение с использованием dataanotation будет выглядеть следующим образом.

public partial class User
{
    [Key]
    public System.Guid Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int UserTypeId { get; set; }
    public UserType UserType { get; set; }
}

public partial class UserType
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    [ForeignKey("UserTypeId")]
    public System.Collections.Generic.ICollection<User> Users { get; set; }
}

И для запроса

var data = await _dbcontext.Users.Include(x => x.UserType).ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...