0

我创建了一个单表联系人数据库,它只有 3 列(Id、Name 和 Phone)。然后,我使用模型文件夹中的表 Contacts创建了ContactsDataContext 。最后,我仍然在模型文件夹中创建了一个局部类(公共局部类 Contact)。

现在当我写这个

public partial class Contact
{
    public string MyContact
    {
        get 
        {
            string name = this.Name ?? String.Empty; 
        }
        // ... Other lines omitted
    }
}

我收到以下错误:“ 'ContactsManager.Models.Contact'不包含' Name '的定义,并且没有扩展方法' Name '接受'ContactsManager.Models.Contact'类型的第一个参数(你错过了吗? using 指令或程序集引用?)

有事吗???甚至 Intellisense 也没有显示我的 DataContext 类的属性。然而,我过去写过一些部分类,没有问题。

谢谢你。

4

2 回答 2

1

两个部分的名称空间是否相同?

于 2009-11-26T12:52:28.250 回答
0

克里斯·罗登

是的,我已经解决了。事实上,我在几个月前开始学习 ASP.NET MVC 时就问过上述问题。我买了一本名为《ASP.NET MVC - The Beer House/Nick Berardi/Wrox》的书。是一本神书,但不推荐给初学者。一般来说,事情就是这样扔的,不知道它们是从哪里来的。

响应来自应用部分类的定义。其中,部分类必须:

  • 同名
  • 前面有'部分'关键字,
  • 在同一个命名空间中定义,
  • 等等

如果您错过了上述任何标准,那么您将遇到麻烦,因为这些标准将用于将所有部分类合并为一个唯一的类。

就我而言,我创建了一个名为ContactDB的表。在我创建了 datacontext 类之后,我在 Linq2Sql 编辑器上删除了 ContactDB 表。您必须知道,这会创建以下类:

public partial class ContactDB
{
  //All the columns in the table become properties in this class
} 

partial 关键字允许我这样写:

public partial class ContactDB
{
  //I can reference members of the above partial class... using this keyword
  //After all, the 2 constitute one class.
} 

在阅读了部分类的定义后,我发现我不符合其中一项标准。我将我的另一个部分类称为“ Contact ”,它与 ContactDB 不同。这足以让我发疯 3 天,直到我阅读了定义。此外,如果您使用正确的名称定义了部分类,但您将它放在不同的命名空间中,您也会遇到麻烦。

所以,如果上面的答案对你不起作用(我不确切知道你的问题),请检查部分类的定义。不要忘记阅读ScottGu 在 Linq2Sql 上的系列

希望能帮助到你。

于 2010-09-25T10:11:23.870 回答