起因

  • 使用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,简化程序设计,一举两得。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐