如何在c#可移植类库中引用dataSet

本文关键字:引用 dataSet 类库 可移植 | 更新日期: 2023-09-27 18:07:01

我有3个不同的项目,在同一个数据集中使用相同的数据表。

我正在尝试创建一个可移植库,以减少跨不同项目的相同代码。

我有麻烦弄清楚如何包括对数据集的引用?

目前我的所有3个项目都有自己的数据集,我正在努力简化它。

我希望我说的有意义。

请用最好的方式引导我…

如何在c#可移植类库中引用dataSet

你需要创建N-Tier架构来解决你的问题

您的项目架构应该是这样的,

Solution(your project) 
|
|-  Project 1
|
|-  Project 2
|
|-  Project 3
|
|-  DAL - //Data access layer 
|
|-  BL - //your business logic will be here 

,只需要在你想使用的地方引用例如

yourproject.Dal.yourclass.yourmethod()

更多信息请参考MVC项目链接

您可以在您的asp.net项目中创建相同的

首先让我指出,Imran的建议是可靠的,你绝对应该考虑这样做;这是明确的,并提供了一个良好的增长路径。这个加1 !

但是既然你特别问了一个"便携式数据集",我把它翻译成"可重用数据集",它立即指向OOP。因为c#是面向对象的,你可以直接创建一个自定义数据集:

下面是一个简单的例子,将几个Access表封装在一个自定义DataSet中。对于其他dbms,请更改为适当的类!

这个简单的类继承自DataSet,并使用Connectstring作为其构造函数中的唯一参数。I存储两个用户表和usertables模式。

显然你会想要大大扩展这个…

public class myDataSet : DataSet
{
    OleDbConnection conn;
    OleDbDataAdapter DBDA;
    OleDbCommand SqlCmd;
    string ConnectionString = @"your default connection string here!";
    public myDataSet (string connectString)
    {
        conn = new OleDbConnection();
        if (String.IsNullOrEmpty(connectString)) 
                conn.ConnectionString = ConnectionString;
        else conn.ConnectionString = connectString;
        connectMe();
        DataTable userTables = conn.GetSchema("Tables");
        SqlCmd = new OleDbCommand("select * from [Names]", conn);
        DBDA = new OleDbDataAdapter(SqlCmd);
        DataTable Names = new DataTable("Names");
        DBDA.Fill(Names); 
        SqlCmd = new OleDbCommand("select * from [Places]", conn);
        DBDA = new OleDbDataAdapter(SqlCmd);
        DataTable Places= new DataTable("Places");
        DBDA.Fill(Places);
        conn.Close();
        this.Tables.Add(userTables);
        this.Tables.Add(Names);
        this.Tables.Add(Places);
    }
    public bool connectMe()
    {
        try { conn.Open();  } 
        catch { /* your error hanfdilng here! */}
        if (conn.State == ConnectionState.Open) return true;
        return false;
    }
}

因为它是一个常规类,你可以添加属性和方法,因为你喜欢;用于重新检索以及更新等。像往常一样,类设计是一门艺术,需要一些考虑以及反复的改进。你当前的需求是一个很好的起点,但是为增长做计划是值得的。

还有两个注释:

  • 直接从DataSet继承是一种简单的方法。通常最好从各种其他类中创建一个类,即composited。所以也许你最终会用一个Class myDbStuff和一个myDataSet作为一个成员。

  • 创建DB-Access对象和采用三层架构不是互斥的;事实上,它们搭配得很好;只要确保你及时知道分隔行应该放在哪里…

要使示例正常工作,请这样做:

  • 创建一个类库项目,包含必要的引用和使用子句,并编译它。
  • 然后在你所有的项目中引用生成的DLL和它的命名空间。