Entity Framework Core Как сделать справочную таблицу для модели

Я использую таблицы SQL для ссылки на статические данные, например, в одном из моих приложений технический специалист имеет отношение «один ко многим» с таблицей клиентов.

В основном то, что я хочу сделать в SQL, это то, что вместо того, чтобы иметь дело со строками, я имею дело с целыми числами как byte или tinyint, которые занимают меньший размер на диске, поскольку клиенты всегда статичны, и редко добавляются новые.

 | Technicians |    |            Clients              |   | ClientsRef |
 |     Id      |    | Id | ClientRefId | TechnicianId |   | Id  | Name |

Моя проблема заключается в том, чтобы сделать это в EF Core 2.2, как мне создать эти статические данные? Я читал об использовании enum, но как я могу получить доступ к этим данным в SQL Server после этого?

public class Technician
{
    int Id { get;set; }
}

public class Client
{
    int Id { get;set; }
    int Technicianid { get; set; }
}   

Непонятно, что вы спрашиваете. Если ваши классы .NET используют 'int', то и ваша база данных SQL Server тоже будет использовать. Можете ли вы добавить достаточно кода к своему вопросу, чтобы объяснить, что вы спрашиваете?

David Browne - Microsoft 26.05.2019 17:23

отредактировано, должно быть понятнее

Jackal 26.05.2019 17:29

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

Gert Arnold 26.05.2019 21:10

Возможно, путаница в том, что ClientsRef на самом деле является таблицей Clients (каждая строка представляет одного клиента), а то, что вы называете Clients, — это связь между техниками и клиентами. Это классическая ассоциация «многие ко многим».

Gert Arnold 26.05.2019 21:13

это отношение один ко многим, как я уже сказал, таблица clientRef - это то, что вы называете на английском языке таблицей поиска, статическими данными для сохранения хранилища с использованием целых чисел в реальной таблице.

Jackal 26.05.2019 21:14

Конечно, у Technician могут быть n клиенты, ссылающиеся на n client-references, а у 1 Client есть только один Technician. Но у другого Technician могут быть те же n клиенты, ссылающиеся на одни и те же n client-references. Между Technicians и ClientsRef существует отношение многие ко многим. Предлагаю только другие названия, т.к. одна запись в Clientsявляется не клиент. Он просто записывает связь между одним физическим специалистом и одним физическим клиентом.

Gert Arnold 26.05.2019 21:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
1 040
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот:

public class Technician
{
    int Id { get;set; }
}

public class Client
{
    int Id { get; set; }
    int TechnicianId { get; set; }
    public virtual Technician Technician {get; set;}
    public string Name { get; set; }
}

Должно быть все, что вам нужно. В модели нет необходимости в каких-либо других таблицах или ключах.

Да, но мне нужно узнать, какой клиент связан с каждым идентификатором, например, идентификатор клиента = 1 — это клиент1, идентификатор = 2 — это клиент2. Как я уже сказал в SQL, у меня есть таблица с именами, связанными

Jackal 26.05.2019 20:38

Затем добавьте свойство Name в сущность Client.

David Browne - Microsoft 26.05.2019 21:24

Но тогда ClientsRef и ClientRefId избыточны.

Gert Arnold 26.05.2019 21:40

Ага. Мне кажется излишним: A technician has a one-to-many relation with a clients table

David Browne - Microsoft 26.05.2019 21:46

Другие вопросы по теме