EFCore操作SQL数据库

3 篇文章 0 订阅
2 篇文章 1 订阅

一、单表操作

  1. 数据表的创建,创建名为UserData的数据表,包含以下属性(UserId、UserName、Password)

在对表操作前向主程序program.cs中插入方法的调用

using (var db = new Learn.Db.Db.FirstDbContext())
  1. 数据的查询

var blogs = db.UserData
    .Where(b =>b.UserId == 1)
    .ToList();
Console.WriteLine(blogs.ToString());
blogs.ToString();

SQL查询

var  data = db.UserData.FromSqlInterpolated($"SELECT * FROM LearnDb.dbo.UserData WHERE UserId = {1}").ToList();
var blogs = db.UserData.FromSqlInterpolated($"SELECT * FROM dbo.Blogs");
  1. 添加数据

UserData UserData = new UserData();
UserData.UserId = 3;
UserData.UserName = "ChenZhe";
UserData.Password = "111111";
db.UserData.Add(UserData);
int count = db.SaveChanges();
  1. 修改数据

var UserData = db.UserData.Single(UserData => UserData.UserName=="Make");//查询原数据
UserData.UserName ="WuTao";//修改原数据
await db.SaveChangesAsync();//把修改的数据保存关系数据库
  1. 删除数据

var UserData = db.UserData.Single(UserData => UserData.UserName == "ZhangLe");
db.Remove(UserData);
await db.SaveChangesAsync();//把删除的数据保存关系数据库

二、多表查询

1.数据准备

建立以下两张表,用来做联表查询(通过Id将两张表连接起来,查询Pet所对应的Owner):

2. 获取属性

public class Entity
{
    //Persons表
    [Table("Persons")]
    public class Persons 
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
    }
    //Pets表
    [Table("Pets")]
    public class Pets
    {
        [Key]
        public int Id { get; set; }
        [Column("Name", TypeName = "string")]
        public string  PetName { get; set; }
        public int Owner { get; set; }
    }
}

3. 建立模型

public DbSet<Entity.Persons> Persons { get; set; }

public DbSet<Entity.Pets> Pets { get; set; }

public DbSet<Result> Results { get; set; }

Result用来保存查询到的结果。

4. 定义接口

创建一个接口类用来定义接口

public interface IActionResult
{
     List<Result>  TestQuery();   
}

5. 定义方法

创建一个类用来定义方法

public class ActionResult : IActionResult
{
    public List<Result> TestQuery()
    {
        try
        {
            using (var db = new Learn.Db.Db.FirstDbContext())
            {
                var sql = "select a.Id,a.Name,b.Name PetName from Persons a left join Pets b on a.Id = b.Id";
                var result =  db.Results.FromSqlRaw(sql).ToList();
                return result;
            }
        }
        catch (Exception)
        {
            throw;
        }
}

6. 调用方法,运行程序

IActionResult actionResult = new ActionResult();//调用方法
using (var db = new Learn.Db.Db.FirstDbContext())
{
    var data = actionResult.TestQuery();
}
catch(Exception e)
{
}

程序运行结果如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值