0

我是实体框架(以及 C#)的新手,所以不确定 EF 到底是如何工作的。我让它在我的代码中运行并观看了视频,但我想做更多。我正在尝试确定我的代码的语法和组织,但我遇到了麻烦,并且真的希望得到一些帮助。我给你背景。

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

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

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

例如这样的:

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

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

谢谢,贾斯汀

4

1 回答 1

1

一个简单的方法是将这些方法添加到您的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);
}
于 2013-10-29T17:25:56.883 回答