2012-01-29 45 views
8

Tengo problemas al intentar consultar la base de datos SQLCE en mi aplicación Windows Phone Mango.El nombre de columna no es válido. [Nombre del nodo (si lo hay) = t0, Nombre de la columna = versión]

me sale 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 ]

Curiosamente, cuando ejecuto consulta basada en cualquier columna individual, que funciona bien

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

Cualquier idea ¿Qué podría estar mal aquí?

+0

¿Es su columna de versión la 'clave primaria'? – Tigran

+0

No tengo una columna de versión –

Respuesta

5

He instalado LINQ to SQL Debug Visualizer para averiguar lo que su búsqueda se está generando exactamente detrás de la escena y fue

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

Esto era extraño porque no tenía la columna de versión en mi mesa (nunca). Miré en mi modelo y me encontré con esta columna define

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

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

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

+0

¡Intente utilizar la Caja de herramientas compacta de SQL Server para generar el DataContext! – ErikEJ

2

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

empecé a usar la herramienta "Caja de herramientas de SQL Server Compact" 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. He instalado la extensión, haga clic en "Caja de herramientas de SQL Server Compact" en el menú Herramientas)

1

He resuelto 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 que desea utilizar, por lo tanto, esa columna no existe en esa tabla.

0

En SqlCE.sdf con SQL Server Managment Studio ejecutar:

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

consiguió problema similar con el nombre de columna no es válido, pero cambió citas a apóstrofes:

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

y funcionó!

Cuestiones relacionadas