0

巨大な 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行目で発生します。

4

1 に答える 1

0

実稼働コードにDBLinqを使用することは避けたいと思います...Linq-To-SQLの機能の多くは実装されておらず、ソースコードをウォークスルーすると、成熟度が低いことがわかります...メソッドの多くは実装されていないか、次のようにマークされています「未終了」。

...警告されました!

于 2009-11-05T14:00:53.643 に答える