EFCore---开篇

一、简介

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;
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值