Por varias razones que no tienen la libertad de hablar, estamos definiendo una vista en nuestro servidor de base de datos SQL 2005, así:Entity Framework y SQL Server Ver
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
La idea es que el Entity Framework creará una entidad sobre la base de esta consulta, que lo hace, pero genera con un error que indica lo siguiente:
Advertencia 6002: la tabla/vista 'Keystone_Local.dbo.MeterProvingStatisticsPoint' no tiene una clave principal definida. La clave se ha inferido y la definición se creó como una tabla/vista de solo lectura.
Y decide que el campo CompletedDateTime será la clave primaria de esta entidad.
Estamos utilizando EdmGen para generar el modelo. ¿Hay alguna manera de que el marco de entidad no incluya ningún campo de esta vista como clave principal?
Creo que esto es lo mejor que se espera. En resumen, funciona. – MvcCmsJon
He intentado esto y no funciona. ¿EF Designer analiza la definición de la vista o simplemente deduce las columnas de los resultados de los datos? – sabanito
¡Gracias! Funcionó perfectamente. @sabanito Creo que analiza la definición. es por eso que debe envolver específicamente las propiedades clave en IsNull(). Tengo una vista que no devuelve ningún nulo (y no puede devolver ningún valor nulo) pero debido a la forma en que se escribió la lógica, EF no pudo determinar que ese era el caso hasta que envolví las claves en IsNull(). – Rabbi