我有多个项目,我在其中读取excel文件,并将内容放入数据库。我该怎么做这个通用的?我可以在app.config中将实体名称和对象类型指定为字符串,而不是让AddContentsToDatabase引用特定的实体和特定类型吗?
我查看了存储库模式的示例,但无法正确引用dbContext。
代码不同的部分是:
private void AddContentsToDatabase()
{
using(var db = new xEntities())
{
foreach (var k in MyObjectDictionary.Keys)
{
MyObject thisO = new MyObject();
db.Add(thisO);
}
db.SaveChanges();
}
}
答案 0 :(得分:0)
在App.config中
<add key="DataParserName" value="XReader" />
在Program.cs中
static void Main()
{
var dependency = GetCorrectDataParser();
dependency.Run()
}
private static IDataParser GetCorrectDataParser()
{
try
{
var classToCreate = ConfigurationManager.AppSettings["DataParserName"];
var type = Type.GetType(classToCreate);
if (type == null) return null;
var dependency = (IDataParser) Activator.CreateInstance(type);
return dependency;
}
catch (Exception ex)
{ throw ex;}
return null;
}
在XReader类中有适当的文件解析并将信息放入数据库。
当要解析另一种不同类型的Excel文件时,在App.config等中将XReader更改为YReader。为YReader创建类。