下面講解Winform界面怎樣調用WebApi接口實現增、刪、改、查(CRUD),下圖是
CSFramework.WebApi后端開發框架測試程序主界面,以單表數據操作界面演示(Customer:客戶管理)為例進行講解。

CRUD是什么?
CRUD是指在做計算處理時的增加(Create)、讀取(Retrieve)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。CRUD主要被用在描述軟件系統中數據庫或者持久層的基本操作功能。
CSFramework.WebApi后端開發框架測試程序主界面:
點【基礎資料(Customer,Object Entity)】按鈕打開【客戶資料管理】管理界面。
一、實現新增功能(Create)
新增按鈕事件:
C# Code:
//新增客戶
private void btnAdd_Click(object sender, EventArgs e)
{
_Mode = "Add";
//創建客戶實體對象
_Current = new Entity_Customer();
_Current.CreatedBy = "admin";
_Current.CreationDate = DateTime.Now;
//綁定主表文本框數據源
DoBindingEditorPanel(panel3, _Current);
//設置按鈕狀態
SetButtonState();
tabControl1.SelectedTab = tabPage2;
txtCustomerCode.ReadOnly = false;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
private void btnAdd_Click(object sender, EventArgs e)
{
_Mode = "Add";
//創建客戶實體對象
_Current = new Entity_Customer();
_Current.CreatedBy = "admin";
_Current.CreationDate = DateTime.Now;
//綁定主表文本框數據源
DoBindingEditorPanel(panel3, _Current);
//設置按鈕狀態
SetButtonState();
tabControl1.SelectedTab = tabPage2;
txtCustomerCode.ReadOnly = false;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
新建一條記錄,首先要創建實體對象,然后綁定編輯界面文本框架的數據源(顯示數據)。
C# Code:
/// <summary>
/// 動態綁定資料編輯組件的數據源
/// </summary>
/// <param name="editorPanel"></param>
/// <param name="dataSource"></param>
private void DoBindingEditorPanel(Control editorPanel, object dataSource)
{
string fieldName = "";
for (int i = 0; i <= editorPanel.Controls.Count - 1; i++)
{
//匹配:txt字段名(屬性名)的組件,如:txtCustomerCode, txtCustomerName
if (editorPanel.Controls[i].Name.Substring(0, 3) != "txt") continue;
if (editorPanel.Controls[i] is TextBoxBase)
{
TextBoxBase edit = editorPanel.Controls[i] as TextBoxBase;
fieldName = edit.Name.Substring(3, edit.Name.Length - 3);
edit.DataBindings.Clear();
Binding b = new Binding("Text", dataSource, fieldName);
edit.DataBindings.Add(b);//綁定數據源
b.ReadValue();
}
}
}
/// 動態綁定資料編輯組件的數據源
/// </summary>
/// <param name="editorPanel"></param>
/// <param name="dataSource"></param>
private void DoBindingEditorPanel(Control editorPanel, object dataSource)
{
string fieldName = "";
for (int i = 0; i <= editorPanel.Controls.Count - 1; i++)
{
//匹配:txt字段名(屬性名)的組件,如:txtCustomerCode, txtCustomerName
if (editorPanel.Controls[i].Name.Substring(0, 3) != "txt") continue;
if (editorPanel.Controls[i] is TextBoxBase)
{
TextBoxBase edit = editorPanel.Controls[i] as TextBoxBase;
fieldName = edit.Name.Substring(3, edit.Name.Length - 3);
edit.DataBindings.Clear();
Binding b = new Binding("Text", dataSource, fieldName);
edit.DataBindings.Add(b);//綁定數據源
b.ReadValue();
}
}
}
保存按鈕事件:
C# Code:
//保存事件
private void btnSave_Click(object sender, EventArgs e)
{
//調用業務層保存方法
ModelResponse result = new bllCustomer().Post(_Current, _Mode);
if (result.Code == 0)
{
//刷新緩存
if (dataGridView1.DataSource == null)
{
List<Entity_Customer> list = new List<Entity_Customer>();
list.Add(_Current);
dataGridView1.DataSource = list;
}
else
{
if (_Mode == "Add")
{
List<Entity_Customer> list = dataGridView1.DataSource as List<Entity_Customer>;
list.Add(_Current);
dataGridView1.DataSource = null;
dataGridView1.DataSource = list;
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
dataGridView1.CurrentCell = dataGridView1[0, dataGridView1.Rows.Count - 1];
}
if (_Mode == "Edit")
{
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
CSFramework.WebApi.Core.WebApiDataConverter.CopyObject(_Current, customer);
}
}
_Mode = "View";
SetButtonState();
MessageBox.Show("保存成功!");
}
else
{
MessageBox.Show("保存失敗!\r\n" + result.Message);
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
private void btnSave_Click(object sender, EventArgs e)
{
//調用業務層保存方法
ModelResponse result = new bllCustomer().Post(_Current, _Mode);
if (result.Code == 0)
{
//刷新緩存
if (dataGridView1.DataSource == null)
{
List<Entity_Customer> list = new List<Entity_Customer>();
list.Add(_Current);
dataGridView1.DataSource = list;
}
else
{
if (_Mode == "Add")
{
List<Entity_Customer> list = dataGridView1.DataSource as List<Entity_Customer>;
list.Add(_Current);
dataGridView1.DataSource = null;
dataGridView1.DataSource = list;
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Selected = true;
dataGridView1.CurrentCell = dataGridView1[0, dataGridView1.Rows.Count - 1];
}
if (_Mode == "Edit")
{
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
CSFramework.WebApi.Core.WebApiDataConverter.CopyObject(_Current, customer);
}
}
_Mode = "View";
SetButtonState();
MessageBox.Show("保存成功!");
}
else
{
MessageBox.Show("保存失敗!\r\n" + result.Message);
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
提交資料,調用WebApi接口:
C# Code:
/// <summary>
/// 保存數據
/// </summary>
/// <param name="model"></param>
/// <param name="mode"></param>
/// <returns></returns>
internal ModelResponse Post(Entity_Customer model, string mode)
{
string data = JsonConvert.SerializeObject(model);
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, mode, data, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
return response;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// <summary>
/// 保存數據
/// </summary>
/// <param name="model"></param>
/// <param name="mode"></param>
/// <returns></returns>
internal ModelResponse Post(Entity_Customer model, string mode)
{
string data = JsonConvert.SerializeObject(model);
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, mode, data, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
return response;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
二、實現刪除功能(Delete)
首先在表格中選擇一條記錄,點【刪除】按鈕。
C# Code:
//刪除按鈕事件
private void btnDelete_Click(object sender, EventArgs e)
{
if (dataGridView1.RowCount <= 0) return;
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
//調用接口刪除記錄
bool ok = new bllCustomer().Delete(customer.CustomerCode);
if (ok)
{
List<Entity_Customer> data = (dataGridView1.DataSource as List<Entity_Customer>);
data.Remove(customer);
dataGridView1.DataSource = null;
dataGridView1.DataSource = data;
//顯示下一條記錄
if (tabControl1.SelectedIndex == 1 && dataGridView1.Rows.Count > 0)
btnView_Click(btnView, new EventArgs());
MessageBox.Show("刪除成功");
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
private void btnDelete_Click(object sender, EventArgs e)
{
if (dataGridView1.RowCount <= 0) return;
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
//調用接口刪除記錄
bool ok = new bllCustomer().Delete(customer.CustomerCode);
if (ok)
{
List<Entity_Customer> data = (dataGridView1.DataSource as List<Entity_Customer>);
data.Remove(customer);
dataGridView1.DataSource = null;
dataGridView1.DataSource = data;
//顯示下一條記錄
if (tabControl1.SelectedIndex == 1 && dataGridView1.Rows.Count > 0)
btnView_Click(btnView, new EventArgs());
MessageBox.Show("刪除成功");
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
C# Code:
/// <summary>
/// 刪除數據,調用WebApi接口
/// </summary>
/// <param name="PONO"></param>
/// <returns></returns>
internal bool Delete(string customerCode)
{
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "Delete", PONO, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
return response.Code == 0;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 刪除數據,調用WebApi接口
/// </summary>
/// <param name="PONO"></param>
/// <returns></returns>
internal bool Delete(string customerCode)
{
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "Delete", PONO, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
return response.Code == 0;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
三、實現修改功能(Update)
修改一條記錄,首先要獲取當前記錄的數據並轉換為實體對象,然后在界面顯示數據(綁定對象的數據源)。
C# Code:
//查看詳情按鈕事件
private void btnView_Click(object sender, EventArgs e)
{
if (dataGridView1.RowCount <= 0) return;
_Mode = "View";
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
_Current = new bllCustomer().GetDataByKey(customer.CustomerCode);
//綁定主表文本框數據源
DoBindingEditorPanel(panel3, _Current);
SetButtonState();
tabControl1.SelectedTab = tabPage2;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
private void btnView_Click(object sender, EventArgs e)
{
if (dataGridView1.RowCount <= 0) return;
_Mode = "View";
Entity_Customer customer = dataGridView1.SelectedCells[0].OwningRow.DataBoundItem asEntity_Customer;
_Current = new bllCustomer().GetDataByKey(customer.CustomerCode);
//綁定主表文本框數據源
DoBindingEditorPanel(panel3, _Current);
SetButtonState();
tabControl1.SelectedTab = tabPage2;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
根據主鍵獲取客戶資料:
C# Code:
/// <summary>
/// 獲取客戶資料
/// </summary>
/// <param name="customerCode"></param>
/// <returns></returns>
public Entity_Customer GetDataByKey(string customerCode)
{
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "View", customerCode, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
if (response.Code == 0)
return JsonConvert.DeserializeObject<Entity_Customer>(response.Data);
else
return null;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 獲取客戶資料
/// </summary>
/// <param name="customerCode"></param>
/// <returns></returns>
public Entity_Customer GetDataByKey(string customerCode)
{
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "View", customerCode, false);
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
if (response.Code == 0)
return JsonConvert.DeserializeObject<Entity_Customer>(response.Data);
else
return null;
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
四、實現查詢功能 (Retrieve)
查詢按鈕事件:
C# Code:
//查詢客戶資料
private void btnQuery_Click(object sender, EventArgs e)
{
//查詢參數
dynamic queryParam = new
{
CustomerCode = txt_CustomerCode.Text,
NativeName = txt_NativeName.Text
};
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = new bllCustomer().Query(queryParam);
if (dataGridView1.DataSource == null) MessageBox.Show("查詢資料失敗!");
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
private void btnQuery_Click(object sender, EventArgs e)
{
//查詢參數
dynamic queryParam = new
{
CustomerCode = txt_CustomerCode.Text,
NativeName = txt_NativeName.Text
};
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = new bllCustomer().Query(queryParam);
if (dataGridView1.DataSource == null) MessageBox.Show("查詢資料失敗!");
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
BLL.Query方法:
C# Code:
/// <summary>
/// 查詢客戶資料
/// </summary>
/// <param name="paramObject">查詢參數,動態對象模型</param>
/// <returns></returns>
public List<Entity_Customer> Query(dynamic paramObject)
{
string dataJson = JsonConvert.SerializeObject(paramObject, JsonSettings.Current);
//創建WebApi接口請求對象
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "Query", dataJson, false);
//提交,POST
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
if (response.Code == 0)
return JsonConvert.DeserializeObject<List<Entity_Customer>>(response.Data);
else
return null;
}
/// 查詢客戶資料
/// </summary>
/// <param name="paramObject">查詢參數,動態對象模型</param>
/// <returns></returns>
public List<Entity_Customer> Query(dynamic paramObject)
{
string dataJson = JsonConvert.SerializeObject(paramObject, JsonSettings.Current);
//創建WebApi接口請求對象
ModelRequestAction request = ModelExample.GetRequestAction("admin", "", "WebApi_TestDB", 800001, "Query", dataJson, false);
//提交,POST
string result = WebApiTools.Post(_URL, JsonConvert.SerializeObject(request, JsonSettings.Current), HttpContentType.Application_JSON);
ModelResponse response = JsonConvert.DeserializeObject<ModelResponse>(result);
if (response.Code == 0)
return JsonConvert.DeserializeObject<List<Entity_Customer>>(response.Data);
else
return null;
}
創建WebApi接口請求對象:
C# Code:
/// <summary>
/// 創建WebApi接口請求對象
/// </summary>
/// <param name="userID">用戶賬號,對應用戶表的Account字段</param>
/// <param name="token">令牌,登錄成功后自動分配</param>
/// <param name="actionID">接口編號、功能編號</param>
/// <param name="op">具體操作,如:Add/Delete/Edit/Query</param>
/// <param name="data">本次操作數據,如Op=Query,Data可以是查詢條件</param>
/// <param name="dataEncrypt">數據是否加密</param>
/// <returns></returns>
public static ModelRequestAction GetRequestAction(string userID, string token, string dbid, intactionID, string op, string data, bool dataEncrypt = true)
{
//Request.Data數據對象
ModelRequestClientData M = new ModelRequestClientData();
M.UserID = userID;
M.Token = token;
M.DBID = dbid;
string clientData = JsonConvert.SerializeObject(M, JsonSettings.Current);
//Request請求主體對象
ModelRequestAction mr = new ModelRequestAction();
mr.Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
mr.Operation = op;
mr.Action = actionID;
mr.ApiKey = PrivateData.apikey;//公鑰
mr.Data = dataEncrypt ? CryptoHelper.DESEncrypt(data, PrivateData.DES_Key, PrivateData.DES_iv) : data;
mr.Sign = CryptoHelper.ToMD5(mr.ApiKey + mr.Data + PrivateData.secret + mr.Timestamp);//Sign數字簽名
mr.DataIsEncrypted = dataEncrypt;
mr.ClientData = clientData;
return mr;
}
/// 創建WebApi接口請求對象
/// </summary>
/// <param name="userID">用戶賬號,對應用戶表的Account字段</param>
/// <param name="token">令牌,登錄成功后自動分配</param>
/// <param name="actionID">接口編號、功能編號</param>
/// <param name="op">具體操作,如:Add/Delete/Edit/Query</param>
/// <param name="data">本次操作數據,如Op=Query,Data可以是查詢條件</param>
/// <param name="dataEncrypt">數據是否加密</param>
/// <returns></returns>
public static ModelRequestAction GetRequestAction(string userID, string token, string dbid, intactionID, string op, string data, bool dataEncrypt = true)
{
//Request.Data數據對象
ModelRequestClientData M = new ModelRequestClientData();
M.UserID = userID;
M.Token = token;
M.DBID = dbid;
string clientData = JsonConvert.SerializeObject(M, JsonSettings.Current);
//Request請求主體對象
ModelRequestAction mr = new ModelRequestAction();
mr.Timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
mr.Operation = op;
mr.Action = actionID;
mr.ApiKey = PrivateData.apikey;//公鑰
mr.Data = dataEncrypt ? CryptoHelper.DESEncrypt(data, PrivateData.DES_Key, PrivateData.DES_iv) : data;
mr.Sign = CryptoHelper.ToMD5(mr.ApiKey + mr.Data + PrivateData.secret + mr.Timestamp);//Sign數字簽名
mr.DataIsEncrypted = dataEncrypt;
mr.ClientData = clientData;
return mr;
}
WebApi服務端實現:
實現命令層,Cmd_Test_Customer:
Cmd_Test_Customer.Execute執行方法:
C# Code:
/// <summary>
/// 執行命令
/// </summary>
/// <returns></returns>
public override IUserResponse Execute()
{
//新增
if (_UserRequest.Operation == CommandOperation.Add.ToString())
{
Entity_Customer customer = _UserRequest.GetDataObject<Entity_Customer>();
DataTable dtTmp = _DAL.GetDataByKey("-");
WebApiDataConverter.AddObject2Table(customer, dtTmp);
bool ok = _DAL.Update(dtTmp);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//刪除
if (_UserRequest.Operation == CommandOperation.Delete.ToString())
{
bool ok = _DAL.Delete(_UserRequest.Data);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//修改
if (_UserRequest.Operation == CommandOperation.Edit.ToString())
{
Entity_Customer customer = _UserRequest.GetDataObject<Entity_Customer>();
DataTable dtTmp = _DAL.GetDataByKey("-");
WebApiDataConverter.AddObject2Table(customer, dtTmp);
dtTmp.AcceptChanges();
dtTmp.Rows[0].SetModified();
bool ok = _DAL.Update(dtTmp);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//查詢
if (_UserRequest.Operation == CommandOperation.Query.ToString())
{
dynamic data = JsonConvert.DeserializeObject<dynamic>(_UserRequest.Data);//測試動態對象
List<Entity_Customer> list = _DAL.Query(data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = JsonConvert.SerializeObject(list)
};
}
//查詢-根據主鍵查詢一條記錄
if (_UserRequest.Operation == "GetCustomer")
{
List<Entity_Customer> list = _DAL.QueryByKey(_UserRequest.Data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = list.Count > 0 ? JsonConvert.SerializeObject(list) : ""
};
}
//根據主鍵值獲取詳情
if (EqualsOP(_UserRequest.Operation, CommandOperation.View))//GetDataByKey
{
Entity_Customer customer = _DAL.Get(_UserRequest.Data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = JsonConvert.SerializeObject(customer)
};
}
return new ModelResponse
{
Code = ErrorCodes.InterfaceIdInvalide,
Message = ErrorCodes.InterfaceIdInvalide_Msg
};
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 執行命令
/// </summary>
/// <returns></returns>
public override IUserResponse Execute()
{
//新增
if (_UserRequest.Operation == CommandOperation.Add.ToString())
{
Entity_Customer customer = _UserRequest.GetDataObject<Entity_Customer>();
DataTable dtTmp = _DAL.GetDataByKey("-");
WebApiDataConverter.AddObject2Table(customer, dtTmp);
bool ok = _DAL.Update(dtTmp);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//刪除
if (_UserRequest.Operation == CommandOperation.Delete.ToString())
{
bool ok = _DAL.Delete(_UserRequest.Data);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//修改
if (_UserRequest.Operation == CommandOperation.Edit.ToString())
{
Entity_Customer customer = _UserRequest.GetDataObject<Entity_Customer>();
DataTable dtTmp = _DAL.GetDataByKey("-");
WebApiDataConverter.AddObject2Table(customer, dtTmp);
dtTmp.AcceptChanges();
dtTmp.Rows[0].SetModified();
bool ok = _DAL.Update(dtTmp);
return new ModelResponse { Code = ok ? 0 : -1, Message = "操作" + (ok ? "成功" : "失敗") };
}
//查詢
if (_UserRequest.Operation == CommandOperation.Query.ToString())
{
dynamic data = JsonConvert.DeserializeObject<dynamic>(_UserRequest.Data);//測試動態對象
List<Entity_Customer> list = _DAL.Query(data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = JsonConvert.SerializeObject(list)
};
}
//查詢-根據主鍵查詢一條記錄
if (_UserRequest.Operation == "GetCustomer")
{
List<Entity_Customer> list = _DAL.QueryByKey(_UserRequest.Data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = list.Count > 0 ? JsonConvert.SerializeObject(list) : ""
};
}
//根據主鍵值獲取詳情
if (EqualsOP(_UserRequest.Operation, CommandOperation.View))//GetDataByKey
{
Entity_Customer customer = _DAL.Get(_UserRequest.Data);
return new ModelResponse
{
Code = 0,
Message = "操作成功",
Data = JsonConvert.SerializeObject(customer)
};
}
return new ModelResponse
{
Code = ErrorCodes.InterfaceIdInvalide,
Message = ErrorCodes.InterfaceIdInvalide_Msg
};
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
數據訪問層:
C# Code:
/// <summary>
/// 客戶管理,數據層
/// </summary>
public class dalCustomer : dalBaseDataDict
{
public dalCustomer(IUserRequestClientLogin loginer)
{
if (loginer != null)
_Database = DatabaseProvider.GetDatabase(loginer.DBID);
else
_Database = DatabaseProvider.GetDatabase("WebApi_TestDB");
this.ORM = typeof(Entity_Customer);
}
public override DataTable GetSummaryData()
{
string sql = "SELECT * FROM tb_Customer ORDER BY CreationDate DESC";
return _Database.GetTable(sql, _TableName);
}
protected override IGenerateSqlCommand CreateSqlGenerator(string tableName)
{
Type ORM = null;
if (tableName == Entity_Customer.__TableName) ORM = typeof(Entity_Customer);
if (ORM == null) throw new Exception(tableName + "表沒有ORM模型!");
return new GenerateSqlCmdByObjectClass(_Database, ORM);
}
public List<Entity_Customer> Query(dynamic data)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE 1=1";
if (data.CustomerCode.ToString() != "") sql += " AND CustomerCode LIKE '%" + data.CustomerCode + "%'";
if (data.NativeName.ToString() != "") sql += " AND NativeName LIKE '%" + data.NativeName + "%'";
List<Entity_Customer> list = _Database.ExecuteReader<Entity_Customer>(sql, row =>WebApiDataConverter.Convert2Object<Entity_Customer>(row));
return list;
}
public List<Entity_Customer> QueryByKey(string key)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE CustomerCode ='" + key + "'";
List<Entity_Customer> list = _Database.ExecuteReader<Entity_Customer>(sql, row =>WebApiDataConverter.Convert2Object<Entity_Customer>(row));
return list;
}
public Entity_Customer Get(string customerCode)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE CustomerCode='" + customerCode + "'";
Entity_Customer customer = _Database.ExecuteReader<Entity_Customer>(sql);
return customer;
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 客戶管理,數據層
/// </summary>
public class dalCustomer : dalBaseDataDict
{
public dalCustomer(IUserRequestClientLogin loginer)
{
if (loginer != null)
_Database = DatabaseProvider.GetDatabase(loginer.DBID);
else
_Database = DatabaseProvider.GetDatabase("WebApi_TestDB");
this.ORM = typeof(Entity_Customer);
}
public override DataTable GetSummaryData()
{
string sql = "SELECT * FROM tb_Customer ORDER BY CreationDate DESC";
return _Database.GetTable(sql, _TableName);
}
protected override IGenerateSqlCommand CreateSqlGenerator(string tableName)
{
Type ORM = null;
if (tableName == Entity_Customer.__TableName) ORM = typeof(Entity_Customer);
if (ORM == null) throw new Exception(tableName + "表沒有ORM模型!");
return new GenerateSqlCmdByObjectClass(_Database, ORM);
}
public List<Entity_Customer> Query(dynamic data)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE 1=1";
if (data.CustomerCode.ToString() != "") sql += " AND CustomerCode LIKE '%" + data.CustomerCode + "%'";
if (data.NativeName.ToString() != "") sql += " AND NativeName LIKE '%" + data.NativeName + "%'";
List<Entity_Customer> list = _Database.ExecuteReader<Entity_Customer>(sql, row =>WebApiDataConverter.Convert2Object<Entity_Customer>(row));
return list;
}
public List<Entity_Customer> QueryByKey(string key)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE CustomerCode ='" + key + "'";
List<Entity_Customer> list = _Database.ExecuteReader<Entity_Customer>(sql, row =>WebApiDataConverter.Convert2Object<Entity_Customer>(row));
return list;
}
public Entity_Customer Get(string customerCode)
{
string sql = "SELECT * FROM dbo.tb_Customer WHERE CustomerCode='" + customerCode + "'";
Entity_Customer customer = _Database.ExecuteReader<Entity_Customer>(sql);
return customer;
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
CSFramework.WebApi后端開發框架測試程序,
VS2017解決方案完整版:

<本文完>

.NET WebApi開發框架|MVC框架|后端框架|服務端框架-標准版V1.0



