[英]How do I add a reference to F# Portable Library from C# Portable Class Library (PCL)
[英]How to figure out how to reference a dataSet in a C# portable class library?
我有3个不同的项目,它们在同一dataSet中使用相同的dataTables。
我正在尝试创建一个可移植的库,以减少不同项目中的相同代码。
我在弄清楚如何为数据集包含引用时遇到麻烦?
目前,我的所有3个项目都有自己的数据集,我正在尝试简化它。
我希望我有道理!
请以最好的方式指导我。
您需要创建N层架构才能解决您的问题
您的项目架构应该是这样的,
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项目中创建相同的项目
首先让我注意到,伊姆兰的建议是坚定的,您绝对应该考虑采用这种方式。 很明显,这为增长提供了良好的途径。 为此+1!
但是,由于您专门询问了“便携式数据集”,因此我将其翻译为“可重用数据集”,它直接指向OOP
。 而且由于C#遍历面向对象,因此您可以继续创建自定义DataSet :
下面是一个简单示例,将一些Access
表封装在一个自定义DataSet
。 对于其他DBMS,请更改为适当的类!
这个简单的类继承自DataSet
,并将Connectstring
用作其构造函数中的唯一参数。 我存储了两个用户表,并且很好地衡量了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
类。 因此,也许您最终将获得一个myDbStuff类, 并将 myDataSet作为一个成员。
创建DB-Access对象和使用3层体系结构 并不是相互排斥的。 实际上,他们在一起做得很好。 只要确保您及时知道备用线的位置即可。
要使示例工作,请执行以下操作:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.