zoukankan      html  css  js  c++  java
  • 设置EntityFramework 在开发时自动更新数据库

    1. NuGet 下载EntityFramework.

    2. 定义Context 和 打开NuGet 命令 执行 Enable-Migrations , Libaray.DAL.Migrations.Configuration 要在执行命令后自动产生.

    using Libaray.Models.Entities;
    using Libaray.Models.Maps;
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Libaray.DAL
    {
        public class LibarayContext : DbContext
        {
            public LibarayContext(): base("name = LibCon")
            {
                Database.SetInitializer(new MigrateDatabaseToLatestVersion<LibarayContext, Libaray.DAL.Migrations.Configuration>()); //重要
            }
    
            public DbSet<UserModel> UserModels { get; set; }
            public DbSet<UserInRoleModel> UserInRoleModels { get; set; }
            public DbSet<UserRoleModel> UserRoleModels { get; set; }
            public DbSet<BookModel> BookModels { get; set; }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
                modelBuilder.Configurations.Add(new UserInRoleModelMap());
                modelBuilder.Configurations.Add(new UserRoleModelMap());
                modelBuilder.Configurations.Add(new UserModelMap());
                modelBuilder.Configurations.Add(new BookModelMap());
            }
        }
    }

    3. 修改configuration

    namespace Libaray.DAL.Migrations
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Migrations;
        using System.Linq;
    
        internal sealed class Configuration : DbMigrationsConfiguration<Libaray.DAL.LibarayContext>
        {
            public Configuration()
            {
                AutomaticMigrationsEnabled = true;
                AutomaticMigrationDataLossAllowed = true;
            }
    
            protected override void Seed(Libaray.DAL.LibarayContext context)
            {
    
            }
        }
    }

    4. 实体类例子

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Libaray.Models.Entities
    {
        public class BookModel
        {
            public Guid BookId { get; set; }
            public string BookName { get; set; }
            public string Author { get; set; }
            public string BookDescription { get; set; }
            public DateTime BookDate { get; set; }
            public DateTime CreatedOn { get; set; }
            public Guid CreatedBy { get; set; }
            public DateTime UpdatedOn { get; set; }
            public Guid UpdatedBy { get; set; }
        }
    }

    5. 实体类Mapping

    using Libaray.Models.Entities;
    using System;
    using System.Collections.Generic;
    using System.Data.Entity.ModelConfiguration;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Libaray.Models.Maps
    {
        public class BookModelMap : EntityTypeConfiguration<BookModel>
        {
            public BookModelMap()
            {
                this.HasKey(u => u.BookId);
                this.Property(u => u.BookId).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
            }
        }
    }
  • 相关阅读:
    Python环境搭建和开发工具的配置
    教材,教材,国内的教材你为何如此不堪入目?码农,码农,你到底该如何脱离码农?
    从一个新手容易混淆的例子简单分析C语言中函数调用过程
    E3: PS4/PC 莎木3 众筹200万美元 9小时内达成
    [原] blade中C++ singleton的实现
    [百度空间] [转] 四元数(Quaternions)
    [百度空间] [原]DLL导出实例化的模板类
    [百度空间] [转]DLL地狱及其解决方案
    [百度空间] [转+原]虚析构函数
    [百度空间] [转]程序员趣味读物:谈谈Unicode编码
  • 原文地址:https://www.cnblogs.com/VirtualMJ/p/5178090.html
Copyright © 2011-2022 走看看