大家好,欢迎来到IT知识分享网。
EF Core 是一个ORM(对象关系映射),它使 .NET 开发人员可以使用 .NET对象操作数据库,避免了像ADO.NET访问数据库的代码,开发者只需要编写对象即可。
EF Core 支持多种数据库引擎:
Microsoft SQL Sever
SQLite
Npgsql
MySQL
……
1.获取EF Core
通过NuGet获取要使用的数据库支持。比如:Microsoft SQL Sever
打开NuGet程序包管理器控制台,输入:Install-Package Microsoft.EntityFrameworkCore.SqlServer
2.模型
EF Core 是通过一个模型进行数据库访问的。模型由实体类和表示与数据库中的会话组成的,以及允许你查询和保存数据派生的上下文。
既可以从现有数据库生成模型,也可以使用EF 迁移来完成从模型生成数据库,也就是Database First 和 Code First。
简单的模型:
public partial classTestContext : DbContext
{publicTestContext()
{
}public TestContext(DbContextOptionsoptions)
:base(options)
{
}public virtual DbSet User { get; set; }protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)
{if (!optionsBuilder.IsConfigured)
{#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.optionsBuilder.UseSqlServer(“Data Source=.;Initial Catalog=Test;Integrated Security=True”);
}
}protected override voidOnModelCreating(ModelBuilder modelBuilder)
{}
}
使用模型操作数据库:
public classHomeController : Controller
{privateDataContext _context;publicHomeController(DataContext context)
{
_context=context;
}publicIActionResult Index()
{
_context.User.Add(new User() { Name=”name”,Password=”123″});
_context.SaveChanges();//查询
var users =_context.User.ToList();returnView();
}
3.Code First
Code First 也就是通过EF迁移来完成从模型生成数据库。
1.创建项目
创建一个ASP.NET Core WEB 应用程序
2.打开NuGet包管理器下载 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools
3.在Models文件夹创建实体类和上下文类
public classBlogContext:DbContext
{public BlogContext(DbContextOptionsoptions)
:base(options)
{
}public DbSet Blog { get; set; }public DbSet Post { get; set; }
}
public classBlog
{public int BlogId { get; set; }public string Url { get; set; }public virtual List Posts { get; set; }
}
public classPost
{public int PostId { get; set; }public string Title { get; set; }public string Content { get; set; }public int BlogId { get; set; }public Blog Blog { get; set; }
}
4.在ConfigureServices方法中添加上下文依赖注入:
public voidConfigureServices(IServiceCollection services)
{
services.Configure(options =>{//This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});var connectionString = Configuration.GetConnectionString(“DefaultConnection”);
services.AddDbContext(options =>options.UseSqlServer(connectionString));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
5.在appsettings.json中添加链接数据库字符串
{“ConnectionStrings”: {“DefaultConnection”: “Data Source=.;Initial Catalog=Blog;Integrated Security=True”},”Logging”: {“LogLevel”: {“Default”: “Information”}
},”AllowedHosts”: “*”}
6.打开NuGet程序包管理控制台,先输入 Add-Migration FirstMigration,再输入Update-Database。迁移成功后,会创建数据库,以及会在项目中生成一个Migrations文件夹,里面时迁移记录。
创建成功就可以通过构造函数依赖注入的方式访问数据库了。
4.Database First
Database First,也就是通过现有数据库生成模型
1.创建项目,并安装Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools 和 Microsoft.EntityFrameworkCore.SqlServer.Design
2.在NuGet程序包管理器控制台输入:Scaffold-DbContext “Data Source=.;Initial Catalog=Blog;Integrated Security=True” Microsoft.EntityFrameworkCore.SqlServer 。执行成功会生成相关模型:
3,现在可以使用上下文访问数据库了,但是不能通过依赖注入的方式。如果需要,还是在ConfigureServices方法中添加代码:services.AddDbContext()。如果要使用appsettings.json中的连接字符串,就需要按照上面ConfigureServices方法中所写的。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15049.html