Приведенные ниже сценарии SQL предназначены для 2 связанных таблиц. Когда я пытаюсь создать модель EF (EF 6.02), я получаю следующую ошибку:
Ошибка 13101: типы всех свойств в зависимой роли ссылочного ограничения должны совпадать с соответствующими типами свойств в основной роли. Тип свойства «from_party_id» объекта «Соглашения» не соответствует типу свойства «to_role_type_code» объекта «party_relationships» в ссылочном ограничении «AGREE_PR_FK».
Первая таблица
CREATE TABLE [dbo].[party_relationships](
[to_party_id] [numeric](8, 0) NOT NULL,
[to_role_type_code] [varchar](10) NOT NULL,
[from_party_id] [numeric](8, 0) NOT NULL,
[from_role_type_code] [varchar](10) NOT NULL,
[from_date] [datetime] NOT NULL,
[priority_code] [varchar](10) NOT NULL,
[status_code] [varchar](10) NOT NULL,
[thru_date] [datetime] NULL,
[pr_comment] [varchar](240) NULL,
CONSTRAINT [PR_PK] PRIMARY KEY CLUSTERED
(
[to_party_id] ASC,
[from_party_id] ASC,
[to_role_type_code] ASC,
[from_role_type_code] ASC,
[from_date] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Вторая таблица
CREATE TABLE [dbo].[agreements](
[agreement_id] [numeric](8, 0) NOT NULL,
[agreement_type_code] [varchar](10) NOT NULL,
[to_party_id] [numeric](8, 0) NOT NULL,
[from_party_id] [numeric](8, 0) NOT NULL,
[pr_from_date] [datetime] NOT NULL,
[from_role_type_code] [varchar](10) NOT NULL,
[to_role_type_code] [varchar](10) NOT NULL,
[agreement_date] [datetime] NOT NULL,
[from_date] [datetime] NOT NULL,
[thru_date] [datetime] NOT NULL,
[description] [varchar](240) NOT NULL,
CONSTRAINT [AGREE_PK] PRIMARY KEY CLUSTERED
(
[agreement_id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON
[НАЧАЛЬНЫЙ]
Ограничение AGREE_PR_FK определяется следующим образом:
ALTER TABLE [dbo].[agreements] WITH CHECK ADD CONSTRAINT [AGREE_PR_FK] FOREIGN KEY([to_party_id], [from_party_id], [to_role_type_code], [from_role_type_code], [pr_from_date])
REFERENCES [dbo].[party_relationships] ([to_party_id], [from_party_id], [to_role_type_code], [from_role_type_code], [from_date])
Похоже, что EF пытается вывести связанные столбцы не по порядку. Или я что-то упускаю!
Я использую SQL Server 2012 и VS 2013 Ultimate в Windows 8.1.