Z kilku powodów, o których nie mogę mówić, definiujemy widok naszej bazy danych Sql Server 2005 w następujący sposób:
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
Chodzi o to, że Entity Framework utworzy jednostkę na podstawie tego zapytania, co robi, ale generuje ją z błędem, który stwierdza, co następuje:
Ostrzeżenie 6002: Tabela / widok „Keystone_Local.dbo.MeterProvingStatisticsPoint” nie ma zdefiniowanego klucza podstawowego. Klucz został wywnioskowany, a definicja została utworzona jako tabela / widok tylko do odczytu.
I decyduje, że pole CompletedDateTime będzie kluczem podstawowym tej jednostki.
Używamy EdmGen do generowania modelu. Czy istnieje sposób, aby struktura encji nie zawierała żadnego pola tego widoku jako klucza podstawowego?