我在使用EF Code First开发的Azure WebApps上运行了一个WebAPI。
现在我需要WebJobs来完成一些调度任务,这些任务应该引用相同的数据库和模型。
我尝试添加WebAPI项目的引用,但是将DLL标记为黄色感叹号。
我无法得到如何继续。你能指点一下吗?
答案 0 :(得分:2)
正如Frederico建议的那样,您应该将Web API项目拆分为多个项目。
如果将数据访问层(EF上下文+查询)隔离到一个单独的程序集中,则可以更轻松地将数据库访问共享到多个项目中。此外,您不必将web特定dll(例如T
或System.Web.Mvc
)的引用添加到您的webjob项目中。
无论如何,您有一些黄色警告,因为您的Web API和Azure Web作业不是针对相同的.Net框架。
右键单击您的项目,然后选择属性。你应该能够调整.Net目标框架。
答案 1 :(得分:0)
我假设你的EF DbContext类和实体驻留在你的Web API项目中。这种单片方法在集成方案中带来了许多问题,例如您所展示的问题。
我的建议是模块化您的解决方案并将所有与数据访问相关的类(DbContext,实体)移到另一个项目中,该项目将由Web API和WebJobs项目引用。
这是一种提高代码可维护性和执行基本软件工程原则(如关注点分离)的常用方法,可通过将应用程序划分为不同的功能层(例如,多层架构)来获得。
如果您有兴趣,可以在此处阅读更多相关信息:https://msdn.microsoft.com/en-us/library/ee658109.aspx?f=255&MSPPError=-2147217396