По нескольким причинам, о которых я не имею права говорить, мы определяем представление о нашей базе данных Sql Server 2005 следующим образом:
CREATE VIEW [dbo].[MeterProvingStatisticsPoint]
AS
SELECT
CAST(0 AS BIGINT) AS 'RowNumber',
CAST(0 AS BIGINT) AS 'ProverTicketId',
CAST(0 AS INT) AS 'ReportNumber',
GETDATE() AS 'CompletedDateTime',
CAST(1.1 AS float) AS 'MeterFactor',
CAST(1.1 AS float) AS 'Density',
CAST(1.1 AS float) AS 'FlowRate',
CAST(1.1 AS float) AS 'Average',
CAST(1.1 AS float) AS 'StandardDeviation',
CAST(1.1 AS float) AS 'MeanPlus2XStandardDeviation',
CAST(1.1 AS float) AS 'MeanMinus2XStandardDeviation'
WHERE 0 = 1
Идея состоит в том, что Entity Framework создаст объект на основе этого запроса, который он делает, но он генерирует его с ошибкой, в которой указано следующее:
Предупреждение 6002: в таблице/представлении "Keystone_Local.dbo.MeterProvingStatisticsPoint" не указан первичный ключ. Ключ был выведен, и определение было создано как таблица/представление только для чтения.
И он решает, что поле CompletedDateTime будет этим первичным ключом этого объекта.
Мы используем EdmGen для генерации модели. Есть ли способ, чтобы инфраструктура сущности не включала любое поле этого представления в качестве первичного ключа?