我是Entity Framework的新手(以及C#),所以不确定EF是如何工作的。我让它在我的代码中工作,并观看了视频,但我想做更多。我试图确定我的代码的语法和组织,但我遇到了麻烦,并且真的希望得到一些帮助。我会给你背景资料。
每天我都会解析一个文本文件,有时我会在MySQL数据库中添加一条记录,或者有时会更新记录。数据库中有3个表,但最终可能会变大。我刚开始做的只是为了让它工作是创建一个Records类并创建单独的方法,这些方法将根据文本文件中某个部分的格式运行。例如,“A 3284712039875817230987123”将是一个地址布局,程序将读取第一个字母,决定在Records对象中运行的解析器方法并运行该方法。大约有6种不同的解析器方法,每种方法在文本文件中解析不同的“布局”。同样在Records类中,它们都有一些辅助方法。
好的,这就是背景。现在出于显而易见的原因,你可以看到这很混乱。我想要做的是基本上创建一个抽象的父类Record,并让它的子元素成为文本文件中的每个布局。所以有一个地址布局,数据布局,它将包含他们各自的解析器,但也继承了我一遍又一遍使用的一些方法,如添加/更新记录和其他方法。
我的问题是:如何在方法中编写形式参数,以便我可以在不定义确切的EntitySet和Entity类型的情况下传递EntitySet和Entity?
例如:
public void AddRecord(EntitySet entitySet, Entity entity)
{
context.entitySet.Add(entity);
context.SaveChanges();
}
我对如何构建方法感到困惑。希望这是有道理的。如果我需要澄清一些事情,请告诉我。
感谢, 贾斯汀
答案 0 :(得分: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);
}