一、简介
1.Entity Framework 简称EF
与Asp.Net MVC关系与ADO.NET关系
ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早期被称为ObjectSpace.
实体框架Entity Framework是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
2.ORM
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访间接口。理想情况下,基于这样一个面向对象的接口,持久化一个对象应该不需要要了解任何关系型数据库存储数据的实现细节。
EF:通过实体和数据库的映射,可以通过对实体的操作完成对数据的操作;以面向对象的思想来完成对数据的管理。
映射: 1.从数据库到代码实体的映射 2.从代码到数据库的映射
DBFirst: 先有数据库, 然后通过映射得到实体(和数据库的表对应) ;
小应用
1.安装相关的包
在控制台中输入:
Scaffold-DbContext "Server=.;Database=dada;Trusted_Connection=True;User Id=sa;Password=123" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entity -Force -Context UserContext -ContextDir /
成功后会出现下面
UserContext.cs
public partial class UserContext : DbContext
{
public UserContext()
{
}
public UserContext(DbContextOptions<UserContext> options)
: base(options)
{
}
public virtual DbSet<UserDatum> UserData { get; set; }
/// <summary>
/// 需要连接数据库所用的配置
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=.;Database=dada;Trusted_Connection=True;User Id=sa;Password=123");
}
}
/// <summary>
/// 这里是配置实体和数据库之间的映射关系
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserDatum>(entity =>
{
entity.HasKey(e => e.PId);
entity.Property(e => e.PId)
.ValueGeneratedNever()
.HasColumnName("p_Id");
entity.Property(e => e.PAge)
.HasMaxLength(50)
.HasColumnName("p_Age");
entity.Property(e => e.PInfo)
.HasMaxLength(50)
.HasColumnName("p_Info");
entity.Property(e => e.PName)
.HasMaxLength(50)
.HasColumnName("p_Name");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
UserDatum.cs
public partial class UserDatum
{
public int PId { get; set; }
public string PName { get; set; }
public string PAge { get; set; }
public string PInfo { get; set; }
}
2. 应用
try
{
using (UserContext context = new UserContext())
{
//添加信息
context.UserData.Add(new Entity.UserDatum()
{
PId = 2,
PName = "hall",
PAge = "322",
PInfo = "fgfgajf"
});
//保存修改
context.SaveChanges();
//查询
UserDatum userDatum = context.UserData.OrderByDescending(j => j.PId).FirstOrDefault();
//保存修改
context.SaveChanges();
//查询
UserDatum userDatum2 = context.UserData.OrderByDescending(j => j.PId).FirstOrDefault();
context.UserData.Remove(userDatum2);
context.SaveChanges();
UserDatum userDatu3 = context.UserData.OrderByDescending(j => j.PId).FirstOrDefault();
}
}
catch (Exception ex)
{
Console.WriteLine("Hello World!");
throw;
}