2011-05-03 69 views
12

我建立使用MEF和4的EntityFramework将数据调入/调出插件的最佳方式是什么?

的应用程序是用计算机上运行一个简单的代理插件架构(和许多插件在.dll文件的形式),我的工作站Agent应用程序。

每个插件都会查询他们自己的插件专用表。主程序(或代理)需要将信息传递给插件,并从插件接收信息。

插件将使用实体框架4.1来检索数据,因此它已经将数据格式化为对象(因为它们绑定到EF上下文,可能是重对象)。此外,我从数据库中拉回的数据是一系列连接,因此数据与我已创建的任何POCO标识/类都不匹配。

将数据调入/调出插件的最佳方式是什么?考虑到我正在使用MEF将各个部分捆绑在一起,并且我已经拥有了插件中数据的对象。我应该创建一个新的POCO并将实体数据移入它,然后洗牌数组?我应该创建一个列表吗?我不仅对能做什么感兴趣,而且最佳做法是什么!

+0

应用程序将使用它从插件获取的数据做什么?我认为这是一些预定义的动作,所以对接口进行编码(应用程序和插件知道 - 也许在一个单独的'Commons'库中)是有道理的。 – Omar 2011-05-04 04:54:11

+0

谢谢奥马尔。我希望主应用程序将插件生成的结果保存到数据库中;我想我可以在[Return]上完成。更多地思考我的问题,我真正想知道的是跨库编组数据的最佳做法是什么。最后,我创建了一个新的POCO(没有getter和setter),只有我要使用的字段,将它们添加到List中,处理EF上下文并返回列表。 – s0ftimage 2011-05-04 16:44:19

+0

您的方法对我来说很合理,但我可能会使用新的POCO(或POCO列表)将数据发送到插件。没有必要让插件真正了解你的数据层,对吧? – Adventure 2011-05-04 19:11:47

回答

1

这是关于Data Transfer Objects的好文章。它涉及您在这里用POCO对象提出的要点。由于您的应用程序的明确意图是进一步扩展和定制,因此我认为POCO对象是要走的路。否则,任何进一步的组件都需要依赖EF,这对插件开发人员来说可能是繁重的。使用POCO/DTO对象,您将对发送的内容和发送的结构有更多的控制。

插件应该实现(虚拟?)基类或接口。我可能会选择接口,因为 - 再次 - 插件开发人员比基类更容易为他们的代码添加接口。

真的,我没有说任何新的你,奥马尔和冒险还没有说过。基本上我是说我认为你已经掌握了它:)

+0

谢谢杰夫!我读了这篇文章。 – s0ftimage 2011-05-14 15:25:24

相关问题