Aus mehreren Gründen, über die ich nicht sprechen kann, definieren wir eine Ansicht in unserer SQL Server 2005-Datenbank wie folgt:
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
Die Idee ist, dass das Entity Framework eine Entität basierend auf dieser Abfrage erstellt, was es jedoch tut, aber es mit einem Fehler generiert, der Folgendes angibt:
Warnung 6002: In der Tabelle / Ansicht 'Keystone_Local.dbo.MeterProvingStatisticsPoint' ist kein Primärschlüssel definiert. Der Schlüssel wurde abgeleitet und die Definition als schreibgeschützte Tabelle / Ansicht erstellt.
Und es wird entschieden, dass das Feld CompletedDateTime dieser Entitätsprimärschlüssel ist.
Wir verwenden EdmGen, um das Modell zu generieren. Gibt es eine Möglichkeit, dass das Entity-Framework kein Feld dieser Ansicht als Primärschlüssel enthält?