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

问题描述 投票:0回答:4

这是我的 DBML 设计器代码

    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 个参数的构造函数?

c# asp.net sql linq linq-to-sql
4个回答
8
投票

您的类中没有定义无参数构造函数

DataClassesDataContext
。默认情况下,应该生成另一个构造函数,它从应用程序设置中获取连接字符串:

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

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

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

4
投票

步骤:

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

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>
    

您可以在

<assemblies>
中找到
<compilation></compilation>

如果您有多个

<add assembly />
标签,则您与数据库有多个连接。

  1. 添加另一个“example.dbml”再次添加您的表。

  2. 创建一个新的数据上下文对象。


0
投票

问题是属性窗口中的连接被删除了。

查看这些属性

  1. 打开 DBML 文件
  2. 单击 DBML 文件中的空白区域(不是表定义)
  3. 单击菜单“视图”>“属性窗口”(F4)
  4. 向下滚动到数据部分。展开连接。单击“连接”右侧的空白区域。单击下拉箭头。 web.config 或 app.config 中的连接字符串名称应显示在此处。
  5. 单击两次以选择它。
  6. 保存
  7. 重建(ctrl+shift+b),您的默认 DataClassesDataContext 构造函数现在将再次工作! :-)

在之前附加的图像中可以看到 Connection 属性已被删除。 如果您无法读取连接,您可以将源代码控制恢复到之前的历史记录点,然后重新添加自上次提交以来的表和设置。

问题已解决!

.designer.cs 中的默认构造函数已恢复。

public DataClassesHelpTicketsDataContext() : 
            base(global::System.Configuration.ConfigurationManager.ConnectionStrings["Help_TicketsConnectionString1"].ConnectionString, mappingSource)
    {
        OnCreated();
    }
© www.soinside.com 2019 - 2024. All rights reserved.