模型 - 部分类和Datacontext类不通信

时间:2009-11-26 12:49:38

标签: asp.net-mvc datacontext partial-classes

我创建了一个表联系人DB,它只有3列(Id,Name和Phone)。然后,我使用模型文件夹中的表格“联系人”创建了 ContactsDataContext 。最后,我还在模型文件夹中创建了一个局部类(公共部分类联系)。

现在我写这个

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

我收到以下错误:“'ContactsManager.Models.Contact'不包含'名称'的定义,也没有扩展方法'名称'接受第一个类型为'ContactsManager.Models.Contact'的参数可以找到(您是否缺少using指令或汇编引用?)

有什么不对吗???即使是Intellisense也没有显示我的DataContext类的属性。然而,我过去写了一些不成问题的部分课程。

谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

Chris Roden,

是的,我已经解决了。事实上,几个月前,当我开始学习ASP.NET MVC时,我已经问过上面的问题了。我买了一本名为“ ASP.NET MVC - The Beer House / Nick Berardi / Wrox。”的书。是一本神书,但对初学者来说并不值得推荐。通常情况下,事情会被抛出,而不会告诉他们来自何处。

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

  • 具有相同的名称
  • 前面有'部分'关键字,
  • 在同一名称空间中定义,

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

就我而言,我创建了一个名为 ContactDB 的表。在我创建了datacontext类之后,我在Contact 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.
} 

在阅读部分类的定义后,我发现我没有达到其中一个标准。我打电话给我的另一个部分课程“联系”,这与ContactDB不同。这足以让我疯狂3天,直到我读到这个定义。此外,如果您使用正确的名称定义了部分类,但是将它放在不同的命名空间中,那么您也会遇到麻烦。

因此,如果上述答案对您不起作用(我不确切地知道您的问题),请查看definition of the partial class。不要忘记阅读ScottGu's series on Linq2Sql

希望它有所帮助。