c# - 添加和更新记录的灵活方法

标签 c# mysql entity-framework

我是 Entity Framework (以及 C#)的新手,所以不确定 EF 到底是如何工作的。我已经在我的代码中运行它并观看了视频,但我想做更多。我正在尝试确定代码的语法和组织,但我遇到了麻烦,并且真的需要一些帮助。我给你介绍一下背景。

每天我都会解析一个文本文件,有时我会向我的 MySQL 数据库添加一条记录,有时会更新一条记录。数据库中有 3 个表,但最终可能会变得更大。我首先做的只是为了让它工作,创建一个 Records 类并创建单独的方法,这些方法将根据文本文件中特定部分的格式运行。例如,“A 3284712039875817230987123”将是一个地址布局,程序读取第一个字母,决定在 Records 对象中运行的解析器方法并运行该方法。大约有 6 种不同的解析器方法,每种方法解析文本文件中的不同“布局”。此外,在 Records 类中,它们各自都有一些辅助方法。

好的,这就是背景。现在,由于显而易见的原因,您可以看到这很困惑。我想做的本质上是创建一个抽象父类 Records,并让它的子类成为文本文件中的每个布局。因此,有一个地址布局、数据布局,其中包含各自的解析器,但也继承了我反复使用的一些方法,例如添加/更新记录和其他方法。

我的问题是:如何在方法中编写形式参数,以便在不定义确切的 EntitySet 和实体类型的情况下传递 EntitySet 和实体?

例如这样的事情:

public void AddRecord(EntitySet entitySet, Entity entity)
{
    context.entitySet.Add(entity);
    context.SaveChanges();
}

我对如何构建该方法感到困惑。希望这是有道理的。如果我需要澄清一些事情,请告诉我。

谢谢, 贾斯汀

最佳答案

一个简单的方法是将这些方法添加到您的DbContext中。您甚至不必提供 EntitySet,只需提供一个实体。 此代码不处理解析部分。

public void AddRecord<T>(params T[] items) where T : class
{
    var set = Set<T>();
    foreach (var item in items)
        set.Add(item);
}

通用删除同样简单。

public void RemoveRecord<T>(params T[] items) where T : class
{
    var set = Set<T>();
    foreach(var item in items)
        set.Remove(item);
}

关于c# - 添加和更新记录的灵活方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661238/

相关文章:

c# - 对象存储在 session 中,但在检索时它为空

java - 使用 JPA EclipseLink 进行无连接远程 MySQL 连接

php - 从所选复选框的数据库中选择全部

php - 使用 idiorm 和 php 更新一行

mysql - 当实体状态改变时得到通知

entity-framework - EF 4.1 SaveChanges 不更新导航或引用属性

c# - 如何让程序等待任务完成然后在单击关闭按钮后退出

c# - 桌面应用程序中的数据可视化

c# - 处理异常,这是一个好方法吗?

entity-framework - Entity Framework 5.0 RC - 包管理器命令 'add-migration' 因据称缺少配置类型而失败