我正在为ASP.net Core重写一个相对简单的C#MVC 5应用程序。我需要在这个数据库中使用相同的数据。是否可以使用相同的数据库并使用EF Core连接到它?或者我是否需要创建一个完整的新数据库并将数据迁移到这个新数据库?
只要该语言支持与该DBMS的连接,您就可以对任何语言,框架等使用相同的数据库。
数据库不应该知道如何构建使用它的应用程序。它的目标是存储数据。您不希望为不同的应用程序克隆相同的DB,这可能最终会在每个应用程序之间具有不同的数据。
例如:
[Mobile application written in swift]
|
|
|
|
V
[Web application written in php] ----------- > [DB] < ----------- [Fat client written in C#]
^
|
|
|
|
[Alien spaceship embedded software written in klingon]
是的,你可以在实体框架核心中使用Creating a Model for an Existing Database
使用Scaffold-DbContext来创建基于现有数据库的模型。可以使用Scaffold-DbContext in Package Manager
控制台指定以下参数:
Scaffold-DbContext [-Connection] [-Provider] [-OutputDir] [-Context] [-Schemas>] [-Tables>]
[-DataAnnotations] [-Force] [-Project] [-StartupProject] [<CommonParameters>]
在Visual Studio中,select menu Tools -> NuGet Package Manger -> Package Manger Console
并运行以下命令:
PM> Scaffold-DbContext "Server=.\SQLExpress;Database=SchoolDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Getting-Started-with-Entity-Framework-Core-Database First Development
可以将EF6与ASP.NET Core一起使用。 “在ASP.NET Core应用程序中使用Entity Framework 6的推荐方法是将EF6上下文和模型类放在一个面向完整框架的类库项目中。” 这是带有代码示例https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6?view=aspnetcore-2.1的文档 此外,Microsoft不建议从EF6移植到EF Core,“除非您有令人信服的理由进行更改”。如果您想这样做,请阅读文档并确保验证要求。 https://docs.microsoft.com/en-us/ef/efcore-and-ef6/porting/