vs2022 使用EntityFrameworkCore访问数据库的方法(DB first)
使用EntityFrameworkCore访问数据库数据,是微软推荐的方法。该方法有很多优点,比如linq 的数据库无关方法,数据类与数据库表结构高度整合等优点,适合于对数据库不熟悉的程序员使用。但对于老程序员来说,通常是在数据库管理软件中调试优化好SQL语句,直接操作数据库,能获得更高的效率。下面提供一种使用EntityFrameworkCore,先设计好数据库结构,再使用EntityFrame
·
起因
- 使用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,简化程序设计,一举两得。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)