我必须创建从excelfiles到数据库的导入。 我创建了一个小系统,它将我的excelfile与某种“excel实体”相匹配。其中一些entites包含多个数据库表的信息,而其他entites我需要计算数据库中的id等。我使用entityframework将数据库映射到对象。
现在我的问题是,我需要一个干净的方法来映射我的excelfile结构和我的数据库结构。
是否有任何模式以干净的方式解决这个问题?我不想检查每个属性是否已更改,...我只需要将数据库与我的excelfile同步。但是excefile看起来并不像我的数据库架构。
如果有人知道如何解决问题的模式或方法,那将是非常好的。
答案 0 :(得分:1)
在我看来,你实际上有两个问题需要解决:1)从excel文件中获取信息到一个很好的模式; 2)同步数据库。如果您正在考虑实体框架,看起来您已经掌控了#2。要解决您的#1问题,您很可能必须创建一个可以填充在#2解决方案中创建的实体的解析器。
TL; DR:将文件解析与同步分开。首先获取所有对象,然后更新数据库。
修改强> 接下来你必须创建一个映射器。可以通过属性名称链接两个对象的东西。查看"Reflection","Extension methods"和更常用的地图搜索器。我会创建一些像这样的东西:
object1.Map("Property1",object2,"Property2");
object1将是您的数据库实体,Property1是您要映射到的属性的名称,object2将是excel实体,Property2是要映射的属性的名称。
PS:如果扩展方法正确完成,您可以“链接”映射:object1.Map("Property1", object2, "Property2").Map("Property3", object3, "Property4")
等等。您甚至可以选择要映射的不同对象。