在我的项目中,我有很多列表(所有的结构都完全相同),我在其中存储所有下拉选项。对于每个表,我都有一个历史表来跟踪所有更改。
我想创建通用函数来插入或更新主表中的记录,并在历史表中添加新记录。
在 SQLite 中我使用类似的东西
public int SaveItem<T>(T item) where T : IMyEntity {
lock (locker) {
if (item.Id != 0) {
database.Update(item);
return item.Id;
}
else {
return database.Insert(item);
}
}
}
我无法使用 EF 做到这一点。数据库是MySQL。
最佳答案
虽然这对于 EF 来说很困难(或者也许不可能),但使用 Drapper 绝对是微不足道的。 。
该方法可能类似于:
public T Save<T> (T item) where T : IMyEntity
{
return _commander.Execute(item) ? item : null;
}
其中_commander
是Drapper的IDbCommander的实例。从此时起,您将提供 SQL 来插入或更新数据库中的项目,并将该 SQL 放入您的配置中。
非常简单,非常快,完全可测试。
关于c# - 将相同的对象保存在不同的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39290625/