将对象映射到数据库实体

时间:2013-08-16 12:37:45

标签: c# database excel entity-framework mapping

我必须创建从excelfiles到数据库的导入。 我创建了一个小系统,它将我的excelfile与某种“excel实体”相匹配。其中一些entites包含多个数据库表的信息,而其他entites我需要计算数据库中的id等。我使用entityframework将数据库映射到对象。

现在我的问题是,我需要一个干净的方法来映射我的excelfile结构和我的数据库结构。

是否有任何模式以干净的方式解决这个问题?我不想检查每个属性是否已更改,...我只需要将数据库与我的excelfile同步。但是excefile看起来并不像我的数据库架构。

如果有人知道如何解决问题的模式或方法,那将是非常好的。

1 个答案:

答案 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")

等等。您甚至可以选择要映射的不同对象。