2012-01-29 16 views
8

Windows Phone MangoアプリケーションでSQLCEデータベースを照会しようとしているときに問題が発生しています。列名が無効です。 [ノード名(存在する場合)= t0、列名=バージョン]

私はすべてのアイデア

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

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

不思議なことに、私は、任意の個々の列に基づいてクエリを実行すると、それが正常に動作します

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

を実行したときに、私は例外を取得ここで何が間違っているのでしょうか?

+0

バージョンの列は「主キー」ですか? – Tigran

+0

私はバージョンの列を持っていません –

答えて

5

私はまさにシーンの後ろに生成されている照会が何かを見つけるためにLINQ to SQL Debug Visualizerをインストールし、私は私のテーブルにバージョン列を持っていなかったので、それは

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

だった。これは(今まで)変でした。私は私のモデルに見て、私はこのコラムは、私はこれらの2行をコメントアウトして列を削除し、アプリを再実行

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

を定義しました。新しく生成されたSQLには versionというカラムがなく、クエリが正常に機能しました。

私はLINQ to SQLクラスを生成するためにSQLCEMangoCodeGeneratorを使用しています。私はそれが私が「SQLCEMangoCodeGenerator」ツールと同じ問題を抱えていた私は、私のテーブルに

+0

SQLContactコンパクトツールボックスを使用してDataContextを生成してみてください! – ErikEJ

2

を持っていなかった余分な列を生成したのため、エラーが、このツールではあると思います。

私は、「SQL Server Compactのツールボックス」ツールを使用するために始めたと私はすべての問題がありませんでした。(「NEW:のDataContext」で検索 http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/

を。スクリーンショットのために上記のウェブサイトにあなたのワンスエクステンションをインストールしたら、[ツール]メニューの[SQL Server Compact Toolbox]をクリック)

1

データベース全体を削除して再作成してこの問題を解決しました。あなたが使用したいよりも、データベース内のテーブルの古いバージョンを持っている場合

Obivouslyは、この問題が発生し、これその列は、そのテーブルに存在しません。

0

SQL Serverの経営管理論StudioでSqlCE.sdfで実行します。列名有効でないと同様の問題を得たが、引用を変え

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

にアポストロフィ

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

それは働いた!