As for existing SQL Server
Install EF first:
dotnet tool install --global dotnet-ef
Prepare a clean .NET project:
anduin@aiursoft.com MINGW64 ~/Desktop
$ mkdir Temp
anduin@aiursoft.com MINGW64 ~/Desktop
$ cd Temp/
anduin@aiursoft.com MINGW64 ~/Desktop/Temp
$ dotnet new console
Getting ready...
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on C:\\Users\\xuef\\Desktop\\Temp\\Temp.csproj...
Determining projects to restore...
Restored C:\\Users\\xuef\\Desktop\\Temp\\Temp.csproj (in 61 ms).
Restore succeeded.
anduin@aiursoft.com MINGW64 ~/Desktop/Temp
$ ls
obj/ Program.cs Temp.csproj
Before further steps, install some required dependencies:
anduin@aiursoft.com MINGW64 ~/Desktop/Temp
$ dotnet add package Microsoft.EntityFrameworkCore.SqlServer
$ dotnet add package Microsoft.EntityFrameworkCore.Design
And try to execute the following command under your project folder to reverse the database:
$ dotnet ef dbcontext scaffold "Server=....." Microsoft.EntityFrameworkCore.SqlServer -o Models
And fill the string Server=.....
with your database connection string. Make sure that you can connect to this database successfully.
anduin@aiursoft.com MINGW64 ~/Desktop/Temp
$ dotnet ef dbcontext scaffold "Data Source=aaaaaaaaa.database.windows.net;Initial Catalog=bbbbbbb;User ID=mydatabase;Password=cccc
ccccc" Microsoft.EntityFrameworkCore.SqlServer -o Models --table EmergencyPatchAttempts
Build started...
Build succeeded.
To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection
string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing conne
ction strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
And EF will try to build models from the database.
Note: Once you have created the model, you must use the Migration commands whenever you change the model to keep the database up to date with the model.
Only want to reverse one table or one view?
Yeah, that command is supported to operate only one table or one view.
Pass the parameter: -t TableNameOrViewName
Example:
$ dotnet ef dbcontext scaffold "Server=....." Microsoft.EntityFrameworkCore.SqlServer -o Models -t TableOrViewName
As for existing MySQL
Steps are similar.
You can follow this article: https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core-scaffold-example.html.
DO USE .NET 5.0! Or you will fail! I wasted here for several hours!
mkdir MyApp5.0
cd MyApp5.0
dotnet new console -f net5.0
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package MySql.EntityFrameworkCore
After reversing, upgrade your project:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.EntityFrameworkCore" Version="6.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.12" />
</ItemGroup>
</Project>
In this blog post, the author provides a detailed guide on how to create a model for an existing database in Entity Framework Core (DB First) for both SQL Server and MySQL databases. The author starts by explaining the installation process of EF and then proceeds with the step-by-step instructions on how to prepare a clean .NET project, install required dependencies, and execute the necessary commands to reverse the database.
The core idea of this blog post is to help developers easily create models from existing databases using Entity Framework Core. The author does a great job of explaining the process in a clear and concise manner, providing examples and commands for both SQL Server and MySQL databases.
The main strength of this blog post is the author's attention to detail and the inclusion of screenshots to help the reader visualize the steps. Additionally, the author provides helpful tips and warnings, such as using .NET 5.0 for MySQL and the need to use Migration commands to keep the database up to date with the model.
One area that could be improved in this blog post is the clarity of some of the instructions. For example, the author could provide more context or explanation for certain steps, such as the purpose of the
dotnet ef dbcontext scaffold
command and its parameters. Additionally, the author could consider providing more information on how to handle potential errors or issues that may arise during the process.In conclusion, this blog post is a valuable resource for developers looking to create models from existing databases using Entity Framework Core. The author's detailed instructions and examples for both SQL Server and MySQL databases make it easy for readers to follow along and successfully complete the process. With some minor improvements to the clarity of certain instructions, this blog post could be even more helpful for developers in the future.