C# EntityFramework笔记

EntityFramework是方便C#和数据库交互的库。

DbContext

我们继承DbContext弄一个类,构造函数输入数据库的连接字符串。

DbSet<>

DbContext里声明几个DbSet<>,可以使用.ToList()转换成列表。DbSet<>.ToString()得到使用的sql语句。

Entity类

要加[Table("表名")]特性。

主键加[Key]特性。

不指定表名会触发Code First模式,也就是C#找不到表就自己建一个。

MyEntity entity=new MyEntity();
using (MyDBContext myDBContext = new(LearnDB.conStr))
{
    myDBContext.entities.Add(entity);
    myDBContext.SaveChanges();
}

using (MyDBContext myDBContext = new(LearnDB.conStr))
{
    var entity= myDBContext.entities.FirstOrDefault(e => e.UserName == userName);
    myDBContext.entities.Remove(entity);
    myDBContext.SaveChanges();
}

DbSet<>.Where(e=>).ToList()返回列表;

DbSet<>.FirstOrDefault(e=>)返回一条数据;

DbSet<>.Count(e=>);

DbSet<>.Max(e=>e.Salary);

DbSet<>.GroupBy(e=>e.sex).Select(g=>new{});

public void SearchByUserName(string userName)
{
    using (MyDBContext myDBContext = new(LearnDB.conStr))
    {
        var data = myDBContext.AccountEntities.FirstOrDefault(e => e.UserName == userName);
    }
}

查全部

using (MyDBContext myDBContext = new(LearnDB.conStr))
{
    var data = myDBContext.AccountEntities.ToList();
    Console.WriteLine(data.Count);
    foreach (var entity in data)
    {
        Console.WriteLine(entity.UserName);
    }
}

public void Update(int Id,string email)
{
    using (MyDBContext myDBContext = new(LearnDB.conStr))
    {
        var data = myDBContext.AccountEntities.FirstOrDefault(e => e.Id ==Id);
        data.Email =email;
        myDBContext.SaveChanges();
    }
}

只能改在这个using区域得到的记录,保存才生效。在其他区域获得的记录想修改生效需要Attach。然后修改状态为Modified。

以Id或用户名为条件,查询后修改其中任意的属性,需要有多少个属性就写多少个方法重载?

添加ADO.NET实体数据模型

升级EF6.2到6.5报错:看起来和中文版不兼容,那么把中文版卸载。

会为数据库生成一个DbContext,里面每个表有一个DBSet<>

数据库连接错误

错误:The underlying provider failed on Open.

用户 'IIS APPPOOL\WebAccount' 登录失败

把连接字符串的

  1. 两个&quot之间加上User ID和Password;
  2. integrated security=True改成false;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值