dataclassesdatacontext'不包含带0个参数的构造函数?

时间:2013-06-26 12:38:23

标签: c# asp.net sql linq linq-to-sql

这是我的DBML Designer代码

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;



public partial class DataClassesDataContext  : System.Data.Linq.DataContext 

{

    private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

  #region Extensibility Method Definitions
  partial void OnCreated();
  #endregion

    public DataClassesDataContext(string connection) : 
            base(connection, mappingSource)

    {
        OnCreated();
    }

    public DataClassesDataContext(System.Data.IDbConnection connection) : 
            base(connection, mappingSource)
    {
        OnCreated();
    }

    public DataClassesDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
            base(connection, mappingSource)
    {
        OnCreated();
    }

    public DataClassesDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
            base(connection, mappingSource)
    {
        OnCreated();
    }

}

这是我的C#代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;



public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void cmdLogin_Click(object sender, EventArgs e)
    {
        DataClassesDataContext db = new DataClassesDataContext();

    }
}

当我写DataClassesDataContex db = new DataClassesDataContex();它会显示DataClassesDataContex不包含带0参数的构造函数吗?

3 个答案:

答案 0 :(得分:5)

您的班级DataClassesDataContext中没有定义无参数构造函数。默认情况下,应该生成另一个构造函数,它从应用程序设置获取连接字符串:

public DataClassesDataContext() : 
        base(global::Foo.Properties.Settings.Default.BarConnectionString,
            mappingSource)
{
    OnCreated();
}

但由于某种原因,它现在缺失了。你可以:

  • 尝试重新生成数据上下文(可能是您错误地删除了此构造函数)。要执行此操作,请右键单击 dbml 文件,然后选择运行自定义工具
  • 创建部分类DataClassesDataContext并手动添加无参数构造函数
  • 创建上下文实例时将连接字符串传递给构造函数

答案 1 :(得分:4)

步骤:

  1. 记住您的dbml文件名并删除您的dbml文件。
  2. 然后将具有相同先前名称的新dbml文件添加到同一位置(add - > add new Item - > LINQ to SQL Classes)。
  3. 双击解决方案资源管理器中的dbml文件。
  4. 现在将所有表拖放到dbml的布局中。
  5. 最后添加与表格的所有关联,如前所述。

答案 2 :(得分:0)

我用以下步骤修复了它:

  1. 删除" dataclasses.dbml"
  2. 打开您的" Web.Config"
  3. 卸下:

    <connectionString>
        <add name="exampleDB" connectionString="Data Source=example;Initial
        Catalog=example;Integrated Security=True"
        providerName="System.Data.SqlClient" />
    </connectionStrings>
    
  4. 卸下:

    <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral,
        PublicKeyToken=D...8"/>
    </assemblies>
    
  5. 您可以在<assemblies>

    中找到<compilation></compilation>

    如果您有多个<add assembly />标记,则您与DB有多个连接。

    1. 添加另一个&#34; example.dbml&#34;再次添加你的表格。

    2. 创建一个新的datacontext对象。