1

このエラーは非常に奇妙です。VS2008 で LINQ to SQL を使用していたときは問題はありませんでしたが、現在は VS2012 を使用しており、この非常に奇妙な状況を発見しました。

まず、スペイン語の VS2012 を持っているので、複数形は False に設定されています。ただし、複数形化がTrueに設定されている場合でも、データベースで実際に実行されるクエリではなく、クラス名にのみ影響するはずです。

さて...その紹介の後で、SQL Server データベースに "Parametro" という名前のテーブルがあることをお伝えします。「Parametro」という名前のクラスを生成するプロジェクトに EF モデルを追加しました。ParametroDataContext クラスを生成するコントローラーを追加しました。

最初のエラーは、コンテキスト クラスに "Parametroes" という名前のプロパティが含まれていたことです (複数形設定を有効にしていないのに、なぜそうなったのでしょうか?)。

そのプロパティを「Parametros」にリファクタリングしました。

次に、コントローラーで次のクエリを実行します。

object o = from p in ParametroContext.Parametros
           where p.par_codigo.Equals("LOGO")
           select p;

データベースで実行された基になるクエリが次のとおりであることを確認したとき、私は何と驚きましたか。

SELECT *
FROM [dbo].[Parametroes] AS [Extent1]
WHERE N'LOGO' = [Extent1].[par_codigo]

ご覧のとおり、LINQ to SQL はテーブル名を "Parametroes" に変更しました。そのため、この時点で行き詰まりました

誰が私にその不規則な行動を説明し、解決策を提案できますか?

ありがとうハイメ

4

2 に答える 2

1

最後に、コントローラーを作成するときに、接続ドロップダウン リストで新しいコンテキストを作成せず、EDMX ファイルの作成時に作成されたものと同じ接続を使用しました。これで問題は解決しました。

よろしくハイメ

于 2013-05-28T01:53:47.627 に答える