Как настроить связь «один ко многим» с помощью таблицы соединения, которая не ссылается на таблицу соединения напрямую вC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить связь «один ко многим» с помощью таблицы соединения, которая не ссылается на таблицу соединения напрямую в

Сообщение Anonymous »

Заранее извините, если об этом спрашивали раньше. Впервые публикую сообщение на SO.
Мы находимся в процессе обновления одного из наших проектов данных с .NET 4.7.2 до .NET 8.0. У меня возникли проблемы при попытке настроить связь «один-ко-многим» между объектами, в которых присутствует таблица соединения/соединения.
Я хотел бы пропустить промежуточную таблицу и получить прямую ссылку к объекту на противоположном конце (та же концепция, что и переход по пропуску для отношений «многие ко многим»).
Структура таблицы и фиктивные данные ниже.

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

CREATE DATABASE Scratch;

USE Scratch;

-- Table creation

CREATE TABLE Scratch.dbo.ContentLanguage
(
Id int IDENTITY(0,1) NOT NULL,
Name nvarchar(255) NOT NULL,
CONSTRAINT PK_ContentLanguage PRIMARY KEY (Id)
);

CREATE TABLE Scratch.dbo.Genre
(
Id int IDENTITY(0,1) NOT NULL,
Name nvarchar(255)  NOT NULL,
CONSTRAINT PK_Genre PRIMARY KEY (Id)
);

CREATE TABLE Scratch.dbo.ContentLanguage_GenreMap
(
ContentLanguageId int IDENTITY(0,1) NOT NULL,
GenreId int NOT NULL,
CONSTRAINT PK_ContentLanguage_GenreMap PRIMARY KEY (ContentLanguageId),
CONSTRAINT FK_ContentLanguage_GenreMap_ContentLanguage FOREIGN KEY (ContentLanguageId) REFERENCES Scratch.dbo.ContentLanguage(Id),
CONSTRAINT FK_ContentLanguage_GenreMap_Genre FOREIGN KEY (GenreId) REFERENCES Scratch.dbo.Genre(Id)
);

-- Seed data

SET IDENTITY_INSERT Scratch.dbo.ContentLanguage ON;

INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (0, N'English');
INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (1, N'French');
INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (2, N'Chinese');
INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (3, N'Dutch; Flemish');
INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (4, N'German');
INSERT INTO Scratch.dbo.ContentLanguage (Id, Name) VALUES (5, N'Italian');

SET IDENTITY_INSERT Scratch.dbo.ContentLanguage OFF;

SET IDENTITY_INSERT Scratch.dbo.Genre ON;

INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (0, N'English');
INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (1, N'French');
INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (2, N'Chinese');
INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (3, N'Dutch; Flemish');
INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (4, N'German');
INSERT INTO Scratch.dbo.Genre (Id, Name) VALUES (5, N'Italian');

SET IDENTITY_INSERT Scratch.dbo.Genre OFF;

SET IDENTITY_INSERT Scratch.dbo.ContentLanguage_GenreMap ON;

INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (0, 0);
INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (1, 1);
INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (2, 2);
INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (3, 3);
INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (4, 4);
INSERT INTO Scratch.dbo.ContentLanguage_GenreMap (ContentLanguageId, GenreId) VALUES (5, 5);

SET IDENTITY_INSERT Scratch.dbo.ContentLanguage_GenreMap OFF;
На данный момент я пробовал только реверс-инжиниринг с использованием EFPT, но не знаю, что еще настроить или попробовать. ЕСЛИ у вас есть какие-либо предложения, дайте мне знать.
В идеале сущности в отношениях должны иметь прямую ссылку на сущность на противоположном конце отношения без ссылки на таблицу соединения.
Есть идеи, как это решить? Если у вас есть еще вопросы, дайте мне знать.
Заранее спасибо.
Я работаю с сильно связанной системой, а не в можно полностью удалить объединяющую таблицу, поскольку она связана с некоторыми процедурами SQL, автоматическими отчетами и т. д.

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

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

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

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

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

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

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