我正在寻找一些关于构建自包含服务的最佳实践建议,即具有所有域逻辑和数据层的 DLL。我想使用一个关闭的自我 CMS,例如 orchard,然后与服务进行对话以进行 CRUD 操作。该服务应该有自己的 IOC 和 ORM,在这种情况下,我使用的是 Ninject 和实体框架。在这个设计中,我将拥有一个与 CMS 不同的数据库,并且可以在需要时将其移植到其他 CMS 系统。
CMS 应该启动服务并向其传递连接字符串或文件名。如果我使用 orchard,它有不同的 ORM 和 IOC 框架,所以这导致我想要将 Ninject 和 Entity Framework 保留在服务中。
我已经设置了一个实验,其中 DbConext 和域位于服务 DLL 中,我从控制台应用程序中调用它。这仅在我在控制台应用程序中引用了实体框架时才有效,即使我没有在该 dll 中使用它。这是控制台应用程序未引用 EF 时的错误消息。
没有为“System.Data.SqlClient”ADO.NET 提供程序找到实体框架提供程序。
为什么会这样以及如何最好地解决我的设计问题?