DBML DataClasses构造函数:'object'不包含带有1个参数的构造函数

时间:2017-04-28 08:24:08

标签: c# linq-to-sql dbml

我已经找到了一百万个应该如何工作的例子,但我无法弄清楚为什么它不能正确识别这个类,好像它没有被标记为“部分”。这是我的部分类,允许我在配置文件中定义我的数据库连接字符串:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration; // For Reading Connection String from Web.Config

namespace PSDataClasses
{
    public partial class DataClassesDataContext
    {
        public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["PSDataClasses.Properties.Settings.DBConnectionString"].ConnectionString)
        {
            OnCreated();
        }
    }
}

但OnCreated()在当前上下文中不存在,它认为我的类是一个对象......我错过了什么?

2 个答案:

答案 0 :(得分:0)

您只是定义了class DataClassesDataContext而没有从另一个类继承(除非您在另一个文件中已经这样做了......)因此DataClassesDataContext继承自object - 所有类派生自对象在层次结构的顶部。

然后使用单个参数调用基础构造函数(看起来像是一个字符串)。但是object没有一个将字符串作为参数的构造函数 - 事实上它只有一个构造函数,它是无参数的。因此,您会收到错误 - 您正在尝试调用不存在的构造函数。

我认为你缺少一个类继承声明,说它是继承自(例如)DataContext:

public partial class DataClassesDataContext : DataContext
{
    public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["PSDataClasses.Properties.Settings.DBConnectionString"].ConnectionString)
    {
        OnCreated();
    }
}

现在调用base(....)将调用' DataContext with a string as a parameter. And if such a constructor exists for class DataContext的构造函数,你的代码应该编译(并且正常工作)。

答案 1 :(得分:0)

我也遇到过这个问题。 实际上,我的问题是我没有从DbContext继承我的上下文类。在确定它工作正常。