最近、共有ホスト上の linq で問題が発生しました。
ホストは Shared Intellect で、フレームワークの v3.5 をサポートしています。ただし、SP1 がインストールされているかどうかはわかりません。私の疑いは、彼らはそうではないということです。
News
次の構造を持つ単純なテーブルがあります。
NewsID uniqueidentifier
Title nvarchar(250)
Introduction nvarchar(1000)
Article ntext
DateEntered datetime (default getdate())
IsPublic bit (default true)
私の目標は、このテーブルから最新の 3 つのレコードを表示することです。私は最初に D&D メソッド (知っています、知っています) を使用し、linq データソースを作成しましたが、結果を希望どおりに制限する方法を見つけることができなかったので、それを削除して次のように書きました。
var dc = new NewsDataContext();
var news = from a in dc.News
where a.IsPublic == true
orderby a.DateEntered descending
select new { a.NewsID, a.Introduction };
lstNews.DataSource = news.Take(3);
lstNews.DataBind();
これは私のローカルマシンで完全に機能しました。
ただし、すべてを共有ホストにアップロードすると、次のエラーが表示されました。
.Read_<>f__AnonymousType0`2
(System.Data.Linq.SqlClient.Implementation.ObjectMaterializer`1<System.Data.SqlClient.SqlDataReader>)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.MethodAccessException:
.Read_<>f__AnonymousType0`2
(System.Data.Linq.SqlClient.Implementation.ObjectMaterializer`1<System.Data.SqlClient.SqlDataReader>)
Google でエラーを検索しようとしましたが、成功しませんでした。次に、想像できるあらゆる方法でクエリを変更しようとしました。where/orderby パラメーターのさまざまな組み合わせを削除し、クエリを 1 つの列に制限し、Take コマンドを削除しました。
したがって、私の質問は3つの部分に分かれています:
- 他の誰かがこれに遭遇しましたか? もしそうなら、「迅速な」修正はありますか?
- データソースを使用して行を制限する方法はありますか?
- 共有ホストが実行しているフレームワークのバージョンを特定する方法はありますか (私は行っており、回答を待っています)