Linq 2 SQL在共享主机上

时间:2008-08-24 23:07:26

标签: linq-to-sql hosting shared

我最近在共享主机上遇到了linq的问题 主机是共享智能,它们支持框架的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参数的各种组合,以及将我的查询限制为单个列,甚至删除 Take命令

因此,我的问题分为三部分:

  1. 是否还有其他人遇到此问题,如果有,是否有“快速”解决方法?
  2. 有没有办法使用数据源来限制行?
  3. 有没有办法确定共享主机运行的框架版本没有直接通过电子邮件发送(我已经完成并正在等待答案)

1 个答案:

答案 0 :(得分:2)

框架在缺少程序集时抛出

System.MethodAccessException,或者其中一个引用的版本错误。

我要做的第一件事就是尝试将代码上传并引用到BIN中的LINQ程序集,而不是共享托管服务提供商GAC。