Blazor小白笔记06-使用ef core增加查询数据

Blazor小白笔记06-使用ef core增加查询数据

编码文章call10242025-02-01 3:53:5014A+A-

先说一个问题,就是照着网站的例子有些demo就跑不起来,也不知道是哪里出错了,另外纠结于怎么保存修改后的数据,最笨的方法应该是遍历一下list

新建一个类,实现实体类、数据库上下文等

以前定义实体类、数据库上下文都是分开写在不同的类里,为了方便做测试,这次就先写到一个类里。

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Threading.Tasks;

namespace Blazor.OnlyServer1.Models
{
    [Table("测试表")]
    public class Test1
    {
        [Key]
        public int Id { get; set; }
        public string? 名称 { get; set; }
        public string? 内容 { get; set; }
    }

    public class MyContext : DbContext  
    {
        public DbSet Tests { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=Localhost;Database=xx;User Id=sa;Password=xxxxxxx;TrustServerCertificate=True");
        }
    }

    public class DataHelp 
    {
        /// 
        /// 增加一条测试的数据
        /// 
        public static async Task AddData() 
        {
            using (var context=new MyContext())
            {
                context.Add(new Test1 { 内容="测试数据",名称="新的名称" });
                await context.SaveChangesAsync();
            }
        }

        
    }
}

连接字符串中把数据库名称和密码换成自己真实的,然后在数据库中新建上一个表,就叫测试表吧。

关于中文表名的问题

数据库中是中文表名的话,两种解决方法:

方法1:在数据库上下文中定义DbSet时直接使用中文的表名,但是在后续使用时会一直用到,切换中文有些不方便

public DbSet 测试表 { get; set; }

方法2:在定义实体类时通过table参数直接指定表名称,然后定义DbSet时用中文和英文都可以的。

[Table("测试表")]
    public class Test1
    {
        [Key]
        public int Id { get; set; }
        public string? 名称 { get; set; }
        public string? 内容 { get; set; }
    }

在组件中使用分页查询

先定义一个在组件中使用的list对像T1

 private List T1 = new List();

然后在查询按钮下给它数据

public  async Task QueryData()
{
    using (var context = new MyContext())
    {
        T1 =  context.Tests.Skip(5).Take(5).ToList();
    }
}

在UI中增加一个按钮,点击时执行分页查询事件



表格测试

        
        
        
    

这里需要特别注意的一点是使用分页查询时,你的数据库一定要新,不能是SQL 2005之类的,不然EF core在生成分页代码时会直接出错,昨天分页时一直没数据,不知道什么原因,最后才发现是自动生成的分页SQL在低版本SQL Server中执行不了。

想要增加一条数据的话,也是增加一个按钮就行了,这里增加的是一条固定的数据

public async Task onAdd()
{
  //先增加一条数据,再查询显示出来
    DataHelp.AddData();
    QueryData();
}

就这吧,一会重装个新版的数据库

#冬日生活打卡季##职场##挑战30天在头条写日记#

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4