vs2022 使用EntityFrameworkCore访问数据库的方法(DB first)

本文介绍如何在.NET中使用EntityFrameworkCore访问数据库,通过设计数据库结构并利用LINQ进行查询优化,同时保持对原有SQL知识的支持,以提高开发效率和代码可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因

  • 使用EntityFrameworkCore访问数据库数据,是微软推荐的方法。该方法有很多优点,比如linq
    的数据库无关方法,数据类与数据库表结构高度整合等优点,适合于对数据库不熟悉的程序员使用。但对于老程序员来说,通常是在数据库管理软件中调试优化好SQL语句,直接操作数据库,能获得更高的效率。下面提供一种使用EntityFrameworkCore,先设计好数据库结构,再使用EntityFrameworkCore访问数据库的方法。

在 Program.cs加入以下代码

var builder = WebApplication.CreateBuilder(args);
string s0=builder.Configuration.GetConnectionString("connectString0");
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddDbContextPool<ZwdbDBContext>(o => o.UseSqlServer(s0));
builder.Services.AddScoped<IWzbmb,ZwdbResposistory>();

//builder.Services.AddScoped<IWzbmb, WzbmbReposistory>();
    var app = builder.Build();

在Models中加入Iwzbm.cs

using System.Data;

namespace WebMvc4.Models
{
    public interface IWzbmb
    {
        public string GetWzbmb(ulong wzbm);
        public List<Km> GetKms(string commandString);
        public DataView GetDataView(string commandString);
        public DataView GetDV(string commandString);
        public string getKmmc(string kmbm);

    }
}

加入数据仓库zwdbResposistory.cs

namespace WebMvc4.Models
{
    public class ZwdbResposistory : IWzbmb
    {
        private readonly ZwdbDBContext _dbContext;
        public ZwdbResposistory(ZwdbDBContext dbContext)
        {
                    _dbContext= dbContext;
        }
       
        public DataView GetDataView(string commandString)
        {
            DataView dv = new();
            return dv;
            //_dbContext.kms.FromSql($"select kmdm,kmmc from km where kmdm<'2001';");
        }
        public DataView GetDV(string commandString)
        {
            throw new NotImplementedException();
        }
        public List<Km> GetKms(string cmd)
        {         
           return  _dbContext.kms.FromSql($"select kmdm,kmmc from km where kmdm<'2001';").ToList();
        }
        public string GetWzbmb(ulong wzbm)
        { 
            throw new NotImplementedException();
        }
        public string getKmmc(string kmdm)
        {
           List<Km> listkm= new List<Km>();
            listkm= _dbContext.kms.Where(o=>o.Kmdm==kmdm).ToList();
            return listkm[0].Kmmc;
        }
    }
}

加入数据库上下文ZwdbConText.cs

using Microsoft.EntityFrameworkCore;

namespace WebMvc4.Models
{
    public class ZwdbDBContext : DbContext
    {
        public ZwdbDBContext(DbContextOptions<ZwdbDBContext> options):base(options)
        {
           
        }
        public DbSet<Km> kms { get;set; }
        
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Km>().ToTable("km");
        }
    }
   
}
 public class Km
 {     
     private string kmdm;
     private string kmmc;    
     public string Kmdm { get => kmdm; set => kmdm = value; }
     public string Kmmc { get => kmmc; set => kmmc = value; }
     public Km()
     {
          }
 }
  • 这样,既能使用原有的数据库知识,优化查询,同时也能使用VS2022提供的完备的API,简化程序设计,一举两得。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值