为什么编译器找不到扩展dbml的部分类?

时间:2011-08-01 20:18:46

标签: c# linq

我有一个名为“truck”的部分类,它是使用LINQ to SQL设计器自动生成的。我在一个单独的代码文件中使用同名的部分类扩展了类。我在我的扩展器类中添加了一个名为“ContainerCount”的方法。在开发过程中,解决方案有时会很好地构建,但有时会出现错误说...

CS1061:'truck'不包含'ContainerCount'的定义,并且没有可以找到接受“truck”类型的第一个参数的扩展方法'ContainerCount'(您是否缺少using指令或程序集引用?)

在开发过程中,我所要做的就是再次构建它,并且没有错误。它似乎被击中或错过了。但是现在我已将它上传到服务器,它会始终显示相同的错误。

关于为什么编译器有时会看到部分类的其余部分而有时没有看到的任何想法?

//from DBML file
[Table(Name="dbo.truck")]
public partial class truck : INotifyPropertyChanging, INotifyPropertyChanged
{...}

//from extension file
public partial class truck
{
    public int ContainerCount(CTSDataClassesDataContext db)
    {...}
}

//Code that creates error
int tContainers = 0;
foreach (var t in trucks)
{
    tContainers += t.ContainerCount(db);
}

1 个答案:

答案 0 :(得分:2)

看起来在编辑dbml文件后通过“Build-> Build Solution”进行构建时,它会尝试继续使用过时的dll。当我使用“Build-> Rebuild Solution”时,它可以正常工作。看起来像一个bug让Visual Studio看不到需要重建编辑过的dbml。

希望这可以帮助有同样问题的人。