core EFCore 开始尝试

准备工作:

工程:core + console

引用包:

Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.Extensions.Configuration.Json

Sqlserver库:127.0.0.1   MyDB  sa  xxx

表:MyTable  --> ID int primaryKey  ……

可以使用Scaffold-DbContext命令生成上下文和实体(此步依赖Microsoft.EntityFrameworkCore.Tools),如下:

Scaffold-DbContext "Data Source=.;Initial Catalog=MyDB;User ID=sa;Password=xxx;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir models

生成的MyDbContext如下:

public partial class MyDBContext : DbContext
{
    public virtual DbSet<MyTable> MyTable { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            //改为读取json配置文件中连接字符串
            optionsBuilder.UseSqlServer(Common.configuration.GetSection("connStr").Value);
            //optionsBuilder.UseSqlServer(@"Data Source=.;Initial Catalog=MyDB;User ID=sa;Password=@sa123;MultipleActiveResultSets=true");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyTable>(entity =>
        {
            entity.Property(e => e.Id).HasColumnName("ID");

            entity.Property(e => e.Address)
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.Name)
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.Value)
                .HasMaxLength(50)
                .IsUnicode(false);
        });
    }
}

改为由json配置文件读取连接字符串需引用Microsoft.Extensions.Configuration.Json,当然前提可解析json的包也可以,在console中,json文件属性需设置为“始终复制,内容”,使用如下:

public class Common
{
    public static IConfiguration configuration { get; set; }
}
//附加配置文件
Common.configuration = new ConfigurationBuilder().Add(new JsonConfigurationSource() { Path = "project.json" }).Build();
//获取配置文件信息
Common.configuration.GetSection("connStr").Value;
//获取配置文件信息时转为对象
Common.configuration.GetSection("connStr").Get<string>();

测试程序如下:

class Program
{
    static void Main(string[] args)
    {
        Common.configuration = new ConfigurationBuilder().Add(new JsonConfigurationSource() { Path = "project.json" }).Build();
        using (MyDBContext context = new MyDBContext())
        {
            var model = context.MyTable.Find(1);
            var list = context.MyTable.FromSql(new RawSqlString("select * from mytable")).ToListAsync().Result;
        }
        Console.ReadKey();
    }
}
原文地址:https://www.cnblogs.com/lcawen/p/9024304.html