Работа с циклической ссылкой в EF 4
У меня есть устаревший дизайн базы данных, который я пытаюсь обойти с помощью EF 4. По сути, у меня есть две таблицы, которые ссылаются друг на друга, вызывая проблемы при попытке добавить новые записи.
Моя структура такая:
CREATE TABLE [dbo].[Account] (
[AccountId] INT IDENTITY (1, 1) NOT NULL,
[PrimaryPersonId] INT NULL,
[other columns])
CREATE TABLE [dbo].[Person] (
[PersonId] INT IDENTITY (1, 1) NOT NULL,
[AccountId] INT NOT NULL,
[other columns])
Персона имеет внешний ключ к учетной записи (AccountId), а учетная запись имеет внешний ключ к учетной записи (PrimaryPersonId). При создании новой учетной записи и лица, это, очевидно, проблема. В настоящее время решение состоит в том, чтобы использовать триггер вставки в таблице Person, который обновляет таблицу Account новым PrimaryPersonId при создании лица.
Я хотел бы избавиться от необходимости триггеров и перенести этот код в модель, если это возможно, чтобы было меньше "волшебства". Есть ли хороший способ сделать это с EF 4?
1 ответ
Я бы предложил перейти к вставке в коде. Создайте метод учетной записи, который принимает объект-личность в качестве параметра), чтобы добавить объект-личность в таблицу учетных записей. Вы могли бы даже пойти дальше и обернуть интерфейс чем-нибудь, что обрабатывает вставку в эту таблицу, чтобы вы могли быть уверены, что это ВСЕГДА происходит.
Блейк Роджерс Оникстек Software Solutions, LLC