我正在尝试在数据库事务上实现缓存,并且希望它们在发生等效的数据库操作时添加,更新和从缓存中删除。
class MainMenu(tk.Menu):
def __init__(self, parent, controller):
tk.Menu.__init__(self, master=None)
self.master = parent
self.controller = controller
print("building menu bar")
self.add_cascade(label="File", menu=self.file_menu(self))
self.add_cascade(label="Settings", menu=self.settings_menu(self))
说我有一个插入表的方法
public class ModelExample
{
public string code { get; set; }
public string description { get; set; }
public string site { get; set; }
}
我希望结果实际返回ModelClass,而不是整数。所以基本上,我想要插入的结果,以便可以将其添加到缓存中。
谢谢
答案 0 :(得分:0)
您可以尝试在select
个值之后输入insert into
个参数。
然后使用QueryFirstOrDefaultAsync<TModel>
执行SQL获取模型。
string SQLStatement = @"insert into modeltable(code,description,site) values (@code,@description,@site)
SELECT @code code,
@description description,
@site site";
ModelExample model = connection.QueryFirstOrDefaultAsync<ModelExample>(SQLStatement,parameter).Result;
答案 1 :(得分:0)
对于MS SQL,您可以使用OUTPUT
子句访问插入的行:
[Test]
public async Task DapperOutputClauseUsage()
{
// Arrange
var conn = new SqlConnection("YourDatabaseConnectionString");
await conn.OpenAsync();
var ex = new ModelExample
{
code = "code",
description = "description",
site = "site"
};
// Act
var result = await conn.QuerySingleAsync<ModelExample>(@"INSERT INTO ModelTable(code, description, site)
OUTPUT INSERTED.*
VALUES (@code, @description, @site)", ex);
// Assert
Assert.AreEqual(result.code, ex.code);
Assert.AreEqual(result.description, ex.description);
Assert.AreEqual(result.site, ex.site);
}
public class ModelExample
{
public string code { get; set; }
public string description { get; set; }
public string site { get; set; }
}
如果主键上有IDENTITY
,则也会返回它。您只需要向模型类添加Id
属性。您还可以对OUTPUT INSERTED.*
和OUTPUT DELETED.*
查询使用UPDATE
和DELETE
来连续访问更改。希望能帮助到你。