Asp.net core 我需要哪一个?EntityFramework.Core还是EntityFramewor.MicrosoftSqlServer?

Asp.net core 我需要哪一个?EntityFramework.Core还是EntityFramewor.MicrosoftSqlServer?,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,我一直在试图找出EntityFramework.Core和EntityFramework.MicrosoftSqlServer之间的区别,以确定我需要哪一个包。直到今天,我才注意到,在我的Visual Studio解决方案中,既有WebUI项目,也有DataAccess项目,WebUI只包括EntityFramework.MicrosoftSqlServer,而DataAccess项目只包括EntityFramework.Core 两者之间的真正区别是什么?我应该在什么时候包括一个与另一个与两个

我一直在试图找出
EntityFramework.Core
EntityFramework.MicrosoftSqlServer
之间的区别,以确定我需要哪一个包。直到今天,我才注意到,在我的Visual Studio解决方案中,既有WebUI项目,也有DataAccess项目,WebUI只包括
EntityFramework.MicrosoftSqlServer
,而DataAccess项目只包括
EntityFramework.Core


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

EntityFramework。MicrosoftSqlServer
依赖于
EntityFramework.Relational
,后者反过来又依赖于
EntityFramework.Core
。恢复项目就是创建依赖关系图并将所有必需的包(无论它们是否在project.json中指定)安装到项目中。 在您的情况下,您只指定了EntityFramework.MicrosoftSqlServer,但在还原过程中,将提取其他依赖项(包括EntityFramework.Core),因此无需显式指定EntityFramework.Core


如果您在dnx上,您可以使用
dnu列表
查看依赖关系图(您可以使用
--details
标志查看更多详细信息),或者,如果您很勇敢,您可以查看project.lock.json文件。

EntityFramework.MicrosoftSqlServer
依赖于
EntityFramework.Relational
,后者反过来又依赖于
EntityFramework.Core
。恢复项目就是创建依赖关系图并将所有必需的包(无论它们是否在project.json中指定)安装到项目中。 在您的情况下,您只指定了EntityFramework.MicrosoftSqlServer,但在还原过程中,将提取其他依赖项(包括EntityFramework.Core),因此无需显式指定EntityFramework.Core


如果您在dnx上,您可以使用
dnu列表
查看依赖关系图(您可以使用
--details
标志查看更多详细信息),或者,如果您很勇敢,您可以查看project.lock.json文件。

两者都是必需的,但如果您添加
EntityFramework.MicrosoftSqlServer
,则将为您添加
EntityFramework.Core
,因为它是
EntityFramework.MicrosoftSqlServer
所必需的

EntityFramework.Core
包含EntityFramework的所有核心代码,如
DbContext
DbSet
和任何
IQueryable扩展
以及许多其他内部代码


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

可用的数据库提供程序:

  • EntityFramework.InMemory
    (这对于编写不需要数据库的测试非常有用)
  • EntityFramework.Sqlite
  • EntityFramework.MicrosoftSqlServer

两者都是必需的,但如果您添加
EntityFramework.MicrosoftSqlServer
,则会为您添加
EntityFramework.Core
,因为它是
EntityFramework.MicrosoftSqlServer
所必需的

EntityFramework.Core
包含EntityFramework的所有核心代码,如
DbContext
DbSet
和任何
IQueryable扩展
以及许多其他内部代码


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

可用的数据库提供程序:

  • EntityFramework.InMemory
    (这对于编写不需要数据库的测试非常有用)
  • EntityFramework.Sqlite
  • EntityFramework.MicrosoftSqlServer

只指定一个与同时指定两个相比有什么好处吗?好处是如果您决定将
EntityFramework.MicrosoftSqlServer
依赖项移动到另一个项目,或者如果他们决定从“EntityFramework.MicrosoftSqlServer”中删除
EntityFramework.Core
依赖项,而您的代码将仍然保留编译。除此之外,我不会添加隐式依赖项。它需要维护更多的东西,就像beta一样,由于重命名或版本不匹配,您可能会遇到一些奇怪的问题。也,请注意,您尚未指定所有隐式依赖项-您必须向project.json添加数十个(如果不是数百个)包引用。@Pawel因此,如果我只指定
EntityFramework.MicrosoftSqlServer
,这将是最好的选择。只指定一个与两个都指定有什么好处吗?如果您决定将
EntityFramework.MicrosoftSqlServer
依赖项移动到另一个项目,或者如果他们决定从“EntityFramework.MicrosoftSqlServer”中删除
EntityFramework.Core
依赖项,您的代码仍将编译该依赖项。除此之外,我不会添加隐式依赖项。它需要维护更多的东西,就像beta一样,由于重命名或版本不匹配,您可能会遇到一些奇怪的问题。另外,请注意,您还没有指定所有的隐式依赖项-您必须向project.json添加数十个甚至数百个包引用。@Pawel因此,如果我只指定
EntityFramework.MicrosoftSqlServer