【问题标题】:Share model and dbcontext between mvc and console application在 mvc 和控制台应用程序之间共享模型和 dbcontext
【发布时间】:2016-01-12 04:23:52
【问题描述】:

我有一个使用相同数据库的 MVC 项目和一个控制台应用程序。我目前在两个解决方案中都复制了模型和 dbcontext,所以我想把它们放在一个地方。我看到类似的问题:herehere。我不相信为此使用 Nuget,所以我宁愿使用类库。我不确定是否特别是对于 MVC 将 dbcontext 与 MVC 应用程序分开会有一些缺点?这有意义吗?然后我将如何从 web/app 配置中引用上下文?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework console-application


    【解决方案1】:

    我建议您将解决方案分层,例如:

    • 域层(实体、存储库和服务接口)
    • 数据层(存储库)
    • IoC 层(Ninject 和所有模块)
    • 表示层(Web 项目)
    • 控制台层

    使用这种方法,您可以在多个层中重用您的实体和存储库(DbContext 和其他可访问数据的类),即使您的项目在增长,相信我,您的项目也在增长。

    在您的 Web 和控制台层中,您引用 DataLayer,然后您可以从那里访问您的上下文。

    尽量遵循SOLID 原则,以获得更好且可重用的代码。

    【讨论】:

    • 嗨 Pedro,是的,SOLID 部分至少在理论上是清楚的,这就是我想要这样做的原因:) 使用层 - 除了概念之外,您如何看待物理上的这一点?
    • 谢谢,虽然我不确定这是否适合我。我想在没有所有网站开销的情况下在云中运行控制台应用程序。实际上它在调试文件夹中只有一个 exe,我不太确定这个 exe 正在执行什么,一切,只是控制台部分?
    • @Turo:您将控制台应用程序中的项目引用添加到您需要的类库项目(域、数据等)。这些编译项目中的 DLL 将在编译时添加到您的控制台应用程序中,因此您只需部署控制台应用程序。它需要的一切,甚至来自其他项目,都随手可得。
    • @ChrisPratt 我有同样的要求,我有一个额外的服务层,我在其中创建与数据库交互的函数。我也需要在控制台应用程序中使用该层,但我必须在控制台的应用程序 app.config 中复制 web.config 以获取 DB 连接字符串、EF 引用等。有没有更好的方法来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2012-01-15
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多