[英]How to insert a record in lambda expression and possible way to shorten the length of code
private void SaveNewLogsheet01Record()
{
try
{
Logsheet01 Header = new Logsheet01();
Header.DrNO = drNO.Text;
Header.DocDate = dtPicker.Value;
Header.RecNum = RecNum.Value;
Header.DocuTitle = DocumentHeader.Text;
SaveRec01(Header);
}
catch (Exception) { }
}
private void SaveNewLogsheet02Record()
{
try
{
Logsheet02 Details = new Logsheet02();
Details.RecNum = RecNum.Value;
Details.DataFile01 = GlobalVar.DataRec01;
Details.DataFile02 = GlobalVar.DataRec02;
Details.DataFile03 = GlobalVar.DataRec03;
Details.UserName = GlobalVar.UserInfo;
SaveRec02(Details);
}
catch (Exception) { }
}
private void SaveRec01(Logsheet01 Header) <-- is this necessary in c#?
{
try
{
using (DBDataContext DB = new DBDataContext())
{
DB.Delivery_HeaderRECs.InsertOnSubmit(Header);
DB.SubmitChanges();
DB.Connection.Close();
}
}
catch (Exception) { }
}
private void SaveRec02(Logsheet02 Header)
{
try
{
using (DBDataContext DB = new DBDataContext())
{
DB.Logsheet0.InsertOnSubmit(Header);
DB.SubmitChanges();
DB.Connection.Close();
}
}
catch (Exception) { }
}
我只是想找到一种新的方法来在数据库上插入记录,如果我在表上有一个带有多个插入的表格,现在使我的代码更整洁,更短:例如“ Logsheet01”和“ Logsheet02”,“ Logsheet03”和我希望我的代码缩短。 有什么办法可以将saveRec01函数放到3个表的一个函数中吗?
有没有办法我可以像这样:
private void SaveRec01(Logsheet01 Header)
{
if(Saving == "Logsheet01") {
using(DBDatacontex DB = new DBDatacontex) {
DB.Logsheet01.InsertOnSubmit(Header);
DB.SubmitChanges();
DB.Connection.Close();
}
}elseif (Saving == "Logsheet02") {
using(DBDatacontex DB = new DBDatacontex) {
DB.Logsheet02.InsertOnSubmit(Header);
DB.SubmitChanges();
DB.Connection.Close();
}
} //etc..
}
还是插入记录列表的新Lambda表达式?
你可以写:
Logsheet01 Header = new Logsheet01({
DrNO = drNO.Text,
DocDate = dtPicker.Value,
RecNum = RecNum.Value,
DocuTitle = DocumentHeader.Text
});
Header.SaveRecord();
创建一个像这样的函数:
private void SaveRecord()
{
using(DBDatacontex DB = new DBDatacontex) {
//I used this because the SaveRecord function is in the same class as the object used to create the record
DB.Delivery_HeaderRECs.InsertOnSubmit(this);
DB.SubmitChanges(); }
}
}
如果您希望摆脱重复的代码,而每次仅指定数据库操作的“实质”,则可以将所有样板代码移动到一个接受Action
的方法中,该方法定义了操作的变量部分,如下所示:
// Wrapper for our database operation.
private void PerformDbOperationAndSubmit(Action<DBDataContext> action)
{
using (DBDataContext DB = new DBDataContext())
{
// Invoke our arbitrary action over the data context.
action(DB);
DB.SubmitChanges();
DB.Connection.Close();
}
}
// Object creation (modified for the sake of brevity).
private void SaveNewLogsheet01Record()
{
Logsheet01 Header = new Logsheet01();
// Fill Header properties here.
PerformDbOperationAndSubmit(dx => dx.Delivery_HeaderRECs.InsertOnSubmit(Header));
}
private void SaveNewLogsheet02Record()
{
Logsheet02 Details = new Logsheet02();
// Fill Details properties here.
PerformDbOperationAndSubmit(dx => dx.Logsheet0.InsertOnSubmit(Details));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.