valido nombre columna agregar c# linq-to-sql sql-server-ce windows-phone-7.1

c# - agregar - El nombre de la columna no es válido.



agregar columna sql (4)

Instalé LINQ to SQL Debug Visualizer para descubrir qué consulta exactamente se está generando detrás de la escena y fue

{SELECT [t0].[version], [t0].[ID], [t0].[Volume], ... similarly rest of the columns FROM [MyTable] AS [t0]

Esto fue extraño porque no tenía una columna de versión en mi tabla (nunca). Miré en mi modelo y encontré esta columna definida

[Column(IsVersion = true)] private Binary version;

Quité la columna al comentar estas dos líneas y volver a ejecutar la aplicación. El SQL recién generado no tenía ninguna columna de version y mi consulta funcionaba bien.

Estoy usando SQLCEMangoCodeGenerator para generar clases de LINQ a SQL. Supongo que el error está en esta herramienta porque generó una columna adicional que no tenía en mi mesa

Estoy enfrentando un problema al intentar consultar la base de datos SQLCE en mi aplicación Windows Phone Mango.

Obtengo excepción cuando ejecuto

foreach (var item in myDataContext.MyTable.Select(item => item))

The column name is not valid. [ Node name (if any) = t0,Column name = version ]

Extrañamente, cuando ejecuto consultas basadas en cualquier columna individual, funciona bien

foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))

¿Alguna idea de lo que podría estar mal aquí?


Estaba teniendo el mismo problema con la herramienta "SQLCEMangoCodeGenerator".

Empecé a usar la herramienta "SQL Server Compact Toolbox" y no he tenido ningún problema: http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/

(busque "NUEVO: DataContext" en el sitio web de arriba para una captura de pantalla. Una vez que haya instalado la extensión, haga clic en "Caja de herramientas de SQL Server Compact" en el menú Herramientas)


Resolví este problema al eliminar toda la base de datos y volver a crearla.

Obviamente, esto sucede, si tiene una versión anterior de la tabla en la base de datos de la que desea usar, entonces esa columna no existe en esa tabla.


En SqlCE.sdf con SQL Server Managment Studio, ejecute:

DELETE FROM [User] WHERE [User].[UserName] = "zz"

Obtuve un problema similar con el nombre de la columna no válido, pero cambié las citas a los apóstrofos :

DELETE FROM [User] WHERE [User].[UserName] = ''zz''

¡Y funcionó!