Subsonic 亚音速3-插入更新
目前正在使用亚音速3和Activerecord。纯粹出于好奇,是否有一种简单的方法来更新或插入一个记录,以一种干净和周到的方式 而不是Subsonic 亚音速3-插入更新,subsonic,subsonic3,subsonic-active-record,Subsonic,Subsonic3,Subsonic Active Record,目前正在使用亚音速3和Activerecord。纯粹出于好奇,是否有一种简单的方法来更新或插入一个记录,以一种干净和周到的方式 而不是 var record = MyModal.SingleOrDefault(x => x.id == 1) if (record != null) { // code to update record here } else { // code to insert a record here MyModal record =
var record = MyModal.SingleOrDefault(x => x.id == 1)
if (record != null)
{
// code to update record here
} else {
// code to insert a record here
MyModal record = new MyModal();
record.attribute1 = "blah"
... blah blah
}
您还应该能够这样做:
// perform insert with a linq expression
db.Insert.Into<PARTS_VI_PART_NUMBER>(
x => x.ITEM_NUMBER,
x => x.ITEM_CLASS_CODE,
x => x.ITEM_DESCRIPTION,
x => x.MANUFACTURER
).Values(
"TEST",
"TEST",
"TEST",
"TEST"
).Execute();
// update using linq expression
db.Update<PARTS_VI_PART_NUMBER>()
.Set(x => x.ITEM_DESCRIPTION == "UPDATED",
x => x.ITEM_CLASS_CODE == "UPDATED2")
.Where(x => x.ITEM_NUMBER == "TEST")
.Execute();
// delete inserted row with a linq expression
db.Delete<PARTS_VI_PART_NUMBER>(x => x.ITEM_NUMBER == "TEST").Execute();
//使用linq表达式执行插入
db.Insert.Into(
x=>x.项目编号,
x=>x.ITEM\u CLASS\u代码,
x=>x.ITEM\u说明,
x=>x.制造商
).价值观(
“测试”,
“测试”,
“测试”,
“测试”
).Execute();
//使用linq表达式更新
db.Update()
.Set(x=>x.ITEM_DESCRIPTION==“已更新”,
x=>x.ITEM\u CLASS\u CODE==“UPDATED2”)
.其中(x=>x.项目编号==“测试”)
.Execute();
//使用linq表达式删除插入的行
db.Delete(x=>x.ITEM_NUMBER==“TEST”).Execute();
至少我在我的一个项目中就是这样做的。
Insert()
、Update()
和Delete()
方法由Context.tt
生成到Context.cs
文件中(我使用的是“ActiveRecord”T4文件)
编辑 哦,对不起,当我读到你的问题时,我以为你在要求一种更简单的方式来“插入”或“更新”,但在重读之后,我意识到你要求的是“插入,或更新,如果它已经存在”,就像做“插入”一样
对不起,我的回答没有涵盖这一点。我也不知道有什么好办法。我通常只是做你正在做的事情。。。尝试选择它,如果没有结果,请执行插入操作。您也可以这样做:
// perform insert with a linq expression
db.Insert.Into<PARTS_VI_PART_NUMBER>(
x => x.ITEM_NUMBER,
x => x.ITEM_CLASS_CODE,
x => x.ITEM_DESCRIPTION,
x => x.MANUFACTURER
).Values(
"TEST",
"TEST",
"TEST",
"TEST"
).Execute();
// update using linq expression
db.Update<PARTS_VI_PART_NUMBER>()
.Set(x => x.ITEM_DESCRIPTION == "UPDATED",
x => x.ITEM_CLASS_CODE == "UPDATED2")
.Where(x => x.ITEM_NUMBER == "TEST")
.Execute();
// delete inserted row with a linq expression
db.Delete<PARTS_VI_PART_NUMBER>(x => x.ITEM_NUMBER == "TEST").Execute();
//使用linq表达式执行插入
db.Insert.Into(
x=>x.项目编号,
x=>x.ITEM\u CLASS\u代码,
x=>x.ITEM\u说明,
x=>x.制造商
).价值观(
“测试”,
“测试”,
“测试”,
“测试”
).Execute();
//使用linq表达式更新
db.Update()
.Set(x=>x.ITEM_DESCRIPTION==“已更新”,
x=>x.ITEM\u CLASS\u CODE==“UPDATED2”)
.其中(x=>x.项目编号==“测试”)
.Execute();
//使用linq表达式删除插入的行
db.Delete(x=>x.ITEM_NUMBER==“TEST”).Execute();
至少我在我的一个项目中就是这样做的。
Insert()
、Update()
和Delete()
方法由Context.tt
生成到Context.cs
文件中(我使用的是“ActiveRecord”T4文件)
编辑 哦,对不起,当我读到你的问题时,我以为你在要求一种更简单的方式来“插入”或“更新”,但在重读之后,我意识到你要求的是“插入,或更新,如果它已经存在”,就像做“插入”一样
对不起,我的回答没有涵盖这一点。我也不知道有什么好办法。我通常只是做你正在做的事情。。。尝试选择它,如果没有结果,则执行插入。标准ActiveRecord模板提供了一个Save()方法,该方法根据对象是否为new()调用Add()或Update()。标准ActiveRecord模板提供了一个Save()方法,根据对象是否为new(),该方法调用Add()或Update()。它应该在您提供的示例中工作。希望它有Rails的find\u或create helper方法:PIt是一个开源项目。。。请随意添加一个;)不幸的是,这是那些没有得到很好支持的事情之一。Ansi sql提供了一个
合并到语句中,但不是每个DB都实现它。有些有自己的语法。我不认为不可能增加亚音速。为每个受支持的数据库添加并测试它只是一些工作。只希望它有Rails的find_或create helper方法:PIt是一个开源项目。。。请随意添加一个;)不幸的是,这是那些没有得到很好支持的事情之一。Ansi sql提供了一个合并到语句中,但不是每个DB都实现它。有些有自己的语法。我不认为不可能增加亚音速。为每个受支持的DB添加它,并对其进行测试,这只是一些工作。