c# - 将相同的对象保存在不同的表中

标签 c# mysql entity-framework

在我的项目中,我有很多列表(所有的结构都完全相同),我在其中存储所有下拉选项。对于每个表,我都有一个历史表来跟踪所有更改。

我想创建通用函数来插入或更新主表中的记录,并在历史表中添加新记录。

在 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/

相关文章:

c# - 如何在 asp.net c# 中将项目动态添加到 Modal Popup 中的列表框

c# - 如何在 C# 中使用 Firebird 创建嵌入式数据库

c# - 我想在 linq 中添加 2 个月后的月份和年份

c# - wcf FaultException 原因

c# - C# 和 Javascript 中函数的区别?

php - 如何使用 php 播放存储在 mysql blob 中的 mp3 音频

MySQL SELECT 效率

mysql - 如何搜索多个多边形内相交的所有点?

c# - 在 IEnumerable View 中编辑数据(订单行的项目)

c# - 在具有 Entity Framework 奇怪行为的循环中构建查询