我需要哪一个? EntityFramework.Core或EntityFramewor.MicrosoftSqlServer?

时间:2016-01-22 01:24:40

标签: asp.net-core entity-framework-core

我一直试图找出EntityFramework.CoreEntityFramework.MicrosoftSqlServer之间的差异,以确定我需要哪个软件包。直到今天我才注意到,在我的Visual Studio解决方案中,同时包含WebUI项目和DataAccess项目,WebUI仅包含EntityFramework.MicrosoftSqlServer,而DataAccess项目仅包含EntityFramework.Core

两者之间的真正区别是什么?何时应该包括一对另一对?我在整个解决方案中使用ASP.Net 5 Core。

2 个答案:

答案 0 :(得分:2)

EntityFramework.MicrosoftSqlServer取决于EntityFramework.RelationalEntityFramework.Core依赖于dnu list。恢复项目是关于创建依赖关系图并将所有必需的包(无论是否在project.json中指定)安装到项目中。 在您的情况下,您只指定了EntityFramework.MicrosoftSqlServer,但在恢复期间,将提取其他依赖项(包括EntityFramework.Core),因此无需明确指定EntityFramework.Core。

如果您使用的是dnx,则可以使用--details查看依赖关系图(您可以使用{{1}}标志查看更多详细信息),或者,如果您很勇敢,可以查看project.lock.json文件。

答案 1 :(得分:1)

两者都是必需的,但如果您添加EntityFramework.MicrosoftSqlServer,则会为EntityFramework.Core添加EntityFramework.MicrosoftSqlServer,因为EntityFramework.Core需要{。}}。

DbContext包含EntityFramework的所有核心代码,例如DbSetIQueryable extensions和任何EntityFramework.MicrosoftSqlServer以及其他许多内部代码。

EntityFramework.InMemory包含sql server的数据库特定sql语法和连接代码。还有其他数据库提供程序。

可用的数据库提供者:

  • EntityFramework.Sqlite(这适用于编写不需要数据库的测试)
  • EntityFramework.MicrosoftSqlServer
  • NSManagedObject