我有一个场景,我从部分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以查看它之后是否有效。
答案 0 :(得分:0)
检查您是否在所有计算机上安装了相同版本的dotnet框架。
构建服务器上可能有3.5而不是3.5SP1。
修改强>
看到框架版本是相同的,其他可能性是:
答案 1 :(得分:0)
删除导致问题的表与.dbml文件中的其他表之间的关联