gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:29:34 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com