LINQ to SQL无法找到关键成员。仅在服务器上失败

时间:2009-11-03 14:54:08

标签: .net linq-to-sql c#-3.0

我有一个场景,我从部分linq中的抽象类继承到sql自动生成的类实现。我的基本抽象类有一个名为ID的抽象属性,我在LINQ to SQL模型中标记了实例修饰符覆盖。这在当地工作正常,没有任何问题。我也在另一台机器上做了一些开发,它也可以正常工作(在VS2008和使用Subversion)。我正在使用TeamCity运行CI,并且构建成功并根据需要进行部署。问题是当服务器第一次尝试通过LINQ to SQL数据上下文访问数据库时,它会生成以下错误。

  

“无法在”CustomType“类型中找到键'Id'的关键成员'Id'。键可能错误或'CustomType'上的字段或属性更改了名称。”

我尝试通过不在我的基类中实现Id字段来更改配置,但这仍然失败。为什么它既可以在我的DEV机器上运行,也可以在服务器上运行?我在另一个在这台服务器上运行的项目中使用LINQ to SQL就好了。

供参考: LINQ to SQL, SQL 2008, .NET 3.5, SERVER 2008, IIS 7.0

更新

我已经回去并在同一个数据模型中第二次添加了同一个表,但没有基类,然后显示该表的结果并且没有错误。这告诉我它与我的基本抽象类有关,需要在我的一个linq到sql模型类(属于一个关键关系)上使用override的实例修饰符标记一个属性。目前还没有答案,但我越来越近了。

更新

我已经修复我的问题只需更改我的方法来解决我的问题,但我仍然感兴趣为什么这不起作用。我创建了一个新的WinSrv2008 VPC并对其进行了修补,部署了我的网站的预构建版本,但仍然遇到了同样的错误。我现在假设问题就像这个人在这里说的那样,VS2008的依赖性问题。我的问题是什么或什么?将在VPC上安装VS2008以查看它之后是否有效。

2 个答案:

答案 0 :(得分:0)

检查您是否在所有计算机上安装了相同版本的dotnet框架。

构建服务器上可能有3.5而不是3.5SP1。

修改

看到框架版本是相同的,其他可能性是:

  • 是否使用Visual Studio中包含的某些功能,而这些功能未安装在服务器上?
  • 是否存在权限问题,是否在同一用户的安全上下文中进行了调用?

答案 1 :(得分:0)

删除导致问题的表与.dbml文件中的其他表之间的关联