[英]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.