Pour plusieurs raisons dont je n'ai pas la liberté de parler, nous définissons une vue sur notre base de données Sql Server 2005 comme ceci:
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
L'idée est que Entity Framework créera une entité basée sur cette requête, ce qu'il fait, mais il la génère avec une erreur indiquant ce qui suit:
Avertissement 6002: La table / vue 'Keystone_Local.dbo.MeterProvingStatisticsPoint' n'a pas de clé primaire définie. La clé a été déduite et la définition a été créée en tant que table / vue en lecture seule.
Et il décide que le champ CompletedDateTime sera la clé primaire de cette entité.
Nous utilisons EdmGen pour générer le modèle. Existe-t-il un moyen de ne pas inclure dans le cadre d'entité un champ de cette vue en tant que clé primaire?