Entity Framework

Entity Framework

ORM框架——对象关系映射:

在没有接触这个之前,我们都是使用ADO.NET的。
EF是ORM框架的一种
在写sql语句会写错,数据又都是弱类型,不好转换。
EF就是用项目中的MODEL代替数据库的各种表,直接通过操作dbContext就可以获得数据库中的数据,然后用LINQ来编写数据库操作语法,EF会自己将LINQ语句翻译为对应的SQL语句,然后将返回的数据自动做类型转换生成对应的model。
理解EF就是吧ADO.NET封装了,只不过有点高级。

在实际项目中,EF有三种模式:
DataBase First
Model First
CodeFirst(优先)
DataBase First 就是根据数据库创建ADO.NET Entity Data Model,生成后直接拿来用CRUP

  Model First先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。

  Code First手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。

实际操作:

Entity层——Data层
引用EntityFramework,在app.config中写上连接字符串:

  <connectionStrings>
    <add name="User" connectionString="Data Source=.;Initial Catalog=User;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

在建立一个UserContext.cs

namespace Data
{
    public class UserContext:DbContext
    {
        public UserContext() : base("User")
        {
            ///数据库初始值设定项指定的上下文类型禁用初始化
            Database.SetInitializer<UserContext>(null);
        }
        //"User和连接字符串名称相同"

        public IDbSet<User> dbUser { get; set; }
        //相当于表的映射过程
        ///保存操作
        public virtual void Commit()
        {
            base.SaveChanges();
        }
        //在EF中表生成了可能在后面加上复数形式,我们需要重写移除复数形式
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            ///移除复数形式
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        }
    }
}

在控制台输入:
Enable-Migrations (就是启动CODE FIRST迁移)
然后控制台会先检查是否有这个数据库,在启动迁移
会发现出现了Migrations的文件夹,结构如下:

  internal sealed class Configuration : DbMigrationsConfiguration<Data.UserContext>
    {
        public Configuration()
        {
           //自动迁移启动
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(Data.UserContext context)
        {
                        context.dbUser.AddOrUpdate(m=>m.ID,
                new Entity.User { ID=1});
        }
    }

然后Seed方法是初始更新数据的。

然后在控制台上输入:
add-migration Initial
就是初始化迁移,创建一个数据库 Initial 可以是任意名称,作用是用来标识的。

最后就是:
update-database
更新创建数据库了。
指定“-Verbose”标记以查看应用于目标数据库的 SQL 语句。

然后就是最简单的crup了。
操作就是先实例化一个UserContext
在获取里面的表用LINQ语法来进行了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值