zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
    Codeforces Round #486 (Div. 3) E. Divisibility by 25
    Codeforces Round #486 (Div. 3) D. Points and Powers of Two
    Codeforces Round #486 (Div. 3) C. Equal Sums
    Codeforces Round #486 (Div. 3) B. Substrings Sort
    Codeforces Round #486 (Div. 3) A. Diverse Team
    2018-06-08
    CCPC-2017-秦皇岛站
    洛谷 P4819 [中山市选]杀人游戏
    洛谷 P2721 小Q的赚钱计划
  • 原文地址:https://www.cnblogs.com/lcawen/p/9024304.html
Copyright © 2011-2022 走看看