Я столкнулся со странной проблемой с Entity Framework в .NET 3.5 SP1 в Visual Studio 2008. Я создал базу данных с несколькими таблицами в SQL Server, а затем создал связанную модель .edmx Entity Framework, и у меня не было проблем. Затем я создал новую таблицу в базе данных, которая имеет внешний ключ к существующей таблице и должна быть добавлена в .edmx. Поэтому я открыл .edmx в Visual Studio и в моделях щелкнул правой кнопкой мыши и выбрал «Обновить модель из базы данных ...». Я увидел новую таблицу на вкладке «Добавить», поэтому я проверил ее и нажал «Готово». Однако я получаю сообщение об ошибке со следующим текстом:
---------------------------
Microsoft Visual Studio
---------------------------
An exception of type 'Microsoft.Data.Entity.Design.Model.Commands.UpdateModelFromDatabaseException' occurred while attempting to update from the database. The exception message is: 'Cannot update from the database. Cannot resolve the Name Target for ScalarProperty 'ID <==> CustomerID'.'.
---------------------------
OK
---------------------------
Для справки, вот таблицы, кажется, наиболее подходящие для ошибки. CustomerPreferences
уже существует в .edmx. Diets
- это таблица, которая была добавлена впоследствии и пытается добавить в .edmx.
CREATE TABLE [dbo].[CustomerPreferences](
[ID] [uniqueidentifier] NOT NULL,
[LastUpdatedTime] [datetime] NOT NULL,
[LastUpdatedBy] [uniqueidentifier] NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID] 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].[Diets](
[ID] [uniqueidentifier] NOT NULL,
[CustomerID] [uniqueidentifier] NOT NULL,
[Description] [nvarchar](50) NOT NULL,
[LastUpdatedTime] [datetime] NOT NULL,
[LastUpdatedBy] [uniqueidentifier] NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Diets] WITH CHECK ADD CONSTRAINT [FK_Diets_CustomerPreferences] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[CustomerPreferences] ([ID])
GO
ALTER TABLE [dbo].[Diets] CHECK CONSTRAINT [FK_Diets_CustomerPreferences]
GO
Это похоже на довольно распространенный вариант использования, поэтому я не уверен, где я ошибаюсь.