CSharp: donet 6 or 7 Migrations with Entity Framework Core 6 or 7
初始化创建表和数据
/// <summary> /// ///Entity /// </summary> public class Product { public Product() { } public int Id { get; set; } public string Name { get; set; } public int Quantity { get; set; } public float Price { get; set; } } /// <summary> /// Entity /// geovindu, Geovin Du /// </summary> public class Customer { public Customer() { } public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } /// <summary> /// /// </summary> public class ECommerceDbContext : DbContext { public DbSet<Product> Products { get; set; } public DbSet<Customer> Customers { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=DESKTOP-NQK85G5\\GEOVIN2008;Database=geovinduCoreDBA;User Id=sa;Password=geovindu;"); } /// <summary> /// /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>(); modelBuilder.Entity<Customer>(); base.OnModelCreating(modelBuilder); } } /// <summary> /// 初始化创建表格 /// </summary> [DbContext(typeof(ECommerceDbContext))] partial class ECommerceDbContextModelSnapshot : ModelSnapshot { /// <summary> /// /// </summary> /// <param name="modelBuilder"></param> protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 //ProductVersion modelBuilder .HasAnnotation("ProductVersion", "6.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); //Customer modelBuilder.Entity("Customer", b => { b.Property<int>("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1); b.Property<string>("FirstName") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property<string>("LastName") .IsRequired() .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.ToTable("Customers"); }); //Product modelBuilder.Entity("Product", b => { b.Property<int>("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1); b.Property<string>("Name") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property<float>("Price") .HasColumnType("real"); b.Property<int>("Quantity") .HasColumnType("int"); b.HasKey("Id"); b.ToTable("Products"); }); #pragma warning restore 612, 618 } }
调用:
//初始化表格至数据库 ECommerceDbContext context = new(); await context.Database.MigrateAsync(); // context = new ECommerceDbContext(); List<Customer> customers = new List<Customer>(); //添加 Customer customer=new Customer(); customer.FirstName= "涂"; customer.LastName = "聚文"; customers.Add(customer); customer = new Customer(); customer.FirstName = "Du"; customer.LastName = "geovind"; customers.Add(customer); context.Customers.AddRange(customers); int k=context.SaveChanges(); if (k > 0) { Console.WriteLine("ok"); } //查询 var custer=context.Customers.FirstOrDefault(); Console.WriteLine(custer.FirstName+","+custer.LastName);
输出:
appsettings.json:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "Persistence": { "Provider": "MSSQL" }, "ConnectionStrings": { "GeovinDuDbContext": "Data Source=DESKTOP-NQK85G5\\GEOVIN2008;Initial Catalog=EntityFramework6;Integrated Security=SSPI;" } }
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using DuEntity; namespace DuUtilitieDB { /// <summary> /// geovindu /// </summary> public class DuDbContext : DbContext { public DbSet<DuProduct> DuProduct { get; set; } public DbSet<DuCustomer> DuCustomer { get; set; } public DbSet<Student> Students { get; set; } public DbSet<Customer> Customers { get; set; } public DbSet<Order> Orders { get; set; } public DbSet<Category> Categories { get; set; } public DbSet<Product> Products { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //读取配置文件 var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) //Environment.CurrentDirectory .AddJsonFile("appsettings.json") .AddInMemoryCollection() .Build(); var connStr = config["ConnectionStrings:GeovinDuDbContext"]; // optionsBuilder.UseSqlServer("Server=DESKTOP-NQK85G5\\GEOVIN2008;Database=geovindu;User Id=sa;Password=geovindu;"); optionsBuilder.UseSqlServer(connStr); } /// <summary> /// /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<DuProduct>(); modelBuilder.Entity<DuCustomer>(); //modelBuilder.Entity<Student>(); //modelBuilder.Entity<Product>(); //modelBuilder.Entity<Category>(); //modelBuilder.Entity<Customer>(); base.OnModelCreating(modelBuilder); } } }
/// <summary> /// 存储过程输出参数 /// EF Core 7 /// </summary> /// <param name="category">输入</param> /// <param name="ategoryID">输出参数</param> /// <returns></returns> public int AddOutProc(Category category,out int categoryID) { int addok = 0; try { using (var context = new DuDbContext()) { addok = 0; var parameter = new SqlParameter[] { new SqlParameter("@CategoryName",SqlDbType.NVarChar,200), new SqlParameter("@CategoryId",SqlDbType.Int), // ParameterName = "@CategoryId", // SqlDbType = System.Data.SqlDbType.Int, // Direction = System.Data.ParameterDirection.Output }; parameter[0].Value = category.CategoryName; parameter[1].Direction = ParameterDirection.Output; // addok = context.Database.ExecuteSqlRaw("dbo.proc_Insert_CategoriesOutput @CategoryName, @CategoryId OUTPUT", parameter); addok = context.Database.ExecuteSqlRawAsync("dbo.proc_Insert_CategoriesOutput @CategoryName, @CategoryId OUTPUT",parameter).Result; categoryID = (int)parameter[1].Value; //context.Database.ExecuteSqlAsync($"UpdateStudentMark @Id={id}, @Mark={mark}"); } } catch (Exception ex) { categoryID = 0; ex.Message.ToString(); } return addok; }
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)