Я использую таблицы 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; }
}
отредактировано, должно быть понятнее
Просто создайте модель класса, которая выглядит как три таблицы, которые у вас есть. Я не очень понимаю проблему. Для EF нет разницы между статическими данными и изменяемыми данными. Это просто данные, и вам решать, разрешаете ли вы приложению изменять их.
Возможно, путаница в том, что ClientsRef
на самом деле является таблицей Clients
(каждая строка представляет одного клиента), а то, что вы называете Clients
, — это связь между техниками и клиентами. Это классическая ассоциация «многие ко многим».
это отношение один ко многим, как я уже сказал, таблица clientRef - это то, что вы называете на английском языке таблицей поиска, статическими данными для сохранения хранилища с использованием целых чисел в реальной таблице.
Конечно, у Technician
могут быть n
клиенты, ссылающиеся на n
client-references, а у 1 Client
есть только один Technician
. Но у другого Technician
могут быть те же n
клиенты, ссылающиеся на одни и те же n
client-references. Между Technicians
и ClientsRef
существует отношение многие ко многим. Предлагаю только другие названия, т.к. одна запись в Clients
является не клиент. Он просто записывает связь между одним физическим специалистом и одним физическим клиентом.
Этот:
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, у меня есть таблица с именами, связанными
Затем добавьте свойство Name в сущность Client.
Но тогда ClientsRef
и ClientRefId
избыточны.
Ага. Мне кажется излишним: A technician has a one-to-many relation with a clients table
Непонятно, что вы спрашиваете. Если ваши классы .NET используют 'int', то и ваша база данных SQL Server тоже будет использовать. Можете ли вы добавить достаточно кода к своему вопросу, чтобы объяснить, что вы спрашиваете?