Entity Framework ошибочно совмещает ключ с некоторыми столбцами varchar как идентификатор - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть следующая таблица:

CREATE TABLE [dbo].[MyTable](
    [timestamp] [timestamp] NOT NULL,
    [Col1] [varchar](20) NOT NULL,
    [Col2] [varchar](20) NOT NULL,
    [col3] [datetime] NOT NULL,
    [col4] [varchar](10) NOT NULL,
    [Col5] [varchar](10) NOT NULL,
    [Col6] [varchar](10) NOT NULL,
    [Col7] [decimal](38, 20) NOT NULL,
    [Col8] [decimal](38, 20) NOT NULL,
    [Col9] [datetime] NOT NULL,
 CONSTRAINT [MyTable$0] PRIMARY KEY CLUSTERED 
(
    [Col1] ASC,
    [Col2] ASC,
    [Col3] ASC,
    [Col4] ASC,
    [Col5] ASC,
    [Col6] ASC,
    [Col7] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [Data Filegroup 1]
) ON [Data Filegroup 1]

Я использую EF Generator для создания класса MyTable, установки всех полей и сохранения изменений.Я получаю следующую ошибку:

Ключи, созданные в магазине, поддерживаются только для столбцов идентификаторов.Ключевой столбец 'Col2' имеет тип 'SqlServer.varchar', который не является допустимым типом для столбца идентификации.

Я не понимаю, почему он считает, что это столбец идентификации.Как бы я исправить эту ошибку?Я смотрю в правильном направлении?

1 Ответ

3 голосов
/ 25 апреля 2011

Проблема заключается в том, что сообщение об ошибке не имеет значения.Что следует сказать, это что-то о ненулевых значениях PK.Кажется, что одно из значений, вовлеченных в PK, было нулевым.Я думаю, что эта проблема связана с тем, что тип String в C # обнуляется, так как Nullable был установлен в False в EF Designer и не выдавал ошибку, так как он просто не был установлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...