巨大な Web アプリケーションを SQL Server から MySql に移行しています。アプリケーションはLinqを使用しているため、DBLinqを使用しています。現在、いくつかのページで奇妙なエラーが発生することを除いて、ほとんどのことが正常に機能しています。それはすべてこれから始まりました:
Property 'Int32 ForumID' is not defined for type 'DbLinq.Data.Linq.Table`1[CPost]'
私は明らかに CPost クラスに ForumID を持っているので、それは問題ではありません。クエリを別のファイルにコピーしようとし、その一部を削除してエラーの原因を確認しました。しばらくして、次の行がわかりました:
var q = from u in db.Users select new {ab = u};
例外が発生しました:
New
行で:
throw new ArgumentException(operationType.ToString());
ソース ファイル: D:\Visual Studio 2008\Projects\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation\ExpressionDispatcher.Analyzer.cs 行: 858
しかし、このコード:
var q = from u in db.Users select u;
完璧に走りました。
必要に応じてさらに情報を提供できますが、ソース コード全体を投稿することはできません。ソース コードは非常に大きいためです(html を含めずに 10,000 行以上)。誰かがこれらに似た問題を抱えていましたか?
編集:さらに調査した後、クエリからキーワード New または MemberInit が見つからないため、DbLinq が不平を言うことがわかりました
var q = db.Posts.Select(post => post);
次の場合に機能します。
var q = db.Posts.Select(o => new SPost {Post = o});
と
var q = db.Users.Select(u => new {user = u});
例外をスローします。例外は、trunk/src/DbLinq/Vendor/Implementation/SqlProvider.cs の 285行目で発生します。