zoukankan      html  css  js  c++  java
  • EF配置文件初始化数据库 codefirst

    1.
    using ConsoleApplication42;
    using System.Data.Entity;
    using System.Data.Entity.ModelConfiguration.Conventions;
    
    namespace ConsoleApplication42
    {
        using System;
        using System.Collections.Generic;
        using System.ComponentModel.DataAnnotations.Schema;
        using System.Data.Entity;
        using System.Linq;
        public class TbUser
        {
            public int Id { get; set; }
            public string UserName { get; set; }
            public string Password { get; set; }
            public string Email { get; set; }
            public virtual ICollection<TbUserRole> TbUserRoles { get; set; }
        }
        public class TbRole
        {
            public int Id { get; set; }
            public string RoleName { get; set; }
            public string RoleDescription { get; set; }
            public virtual ICollection<TbUserRole> TbUserRoles { get; set; }
        }
        public class TbUserRole
        {
            public int Id { get; set; }
            public int UserId { get; set; }
            public int RoleId { get; set; }
            [ForeignKey("UserId")]
            public virtual TbUser TbUser { get; set; }
            [ForeignKey("RoleId")]
            public virtual TbRole TbRole { get; set; }
        }
        public class stud
        {
    
        }
        public class MyDbContext : DbContext
        {
          
            public MyDbContext()
                : base("MyDbContext")
            {
    
               
            }
            public IDbSet<TbUser> TbUsers { get; set; }
            public IDbSet<TbRole> TbRoles { get; set; }
            public IDbSet<TbUserRole> TbUserRoles { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                //因为表名称默认为复数形式,这里是移除复数形式,所以为单数形式生成
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
        }
    
        //public class MyEntity
        //{
        //    public int Id { get; set; }
        //    public string Name { get; set; }
        //}
        public class Initializer : CreateDatabaseIfNotExists<MyDbContext>
        {
            public MyDbContext dbContext { get; set; }
            
            public Initializer()
            {
               
            }
            /// <summary>
            ///  
            /// </summary>
            /// <param name="initData">是否初始化数据库数据 默认不初始化表为空</param>
            public void InitData(bool initData=false)
            {
                
                InitializeDatabase(dbContext);
    
    
                if (!initData)
                    return;
                Seed(dbContext);
            }
            public override void InitializeDatabase(MyDbContext context)
            {
                base.InitializeDatabase(context);
            }
            protected override void Seed(MyDbContext context)
            {
                var tbUsers = new List<TbUser> {
                    new TbUser{UserName="张三",Password="zhangsan",Email="zhangsan@163.com"},
                    new TbUser{UserName="李四",Password="lisi",Email="lisi@163.com"}
                };
                tbUsers.ForEach(u => context.TbUsers.Add(u));
    
                var tbRoles = new List<TbRole> {
                    new TbRole{RoleName="管理员",RoleDescription="管理员具有最高权限来对系统进行管理"},
                    new TbRole{RoleName="一般用户",RoleDescription="一般用户具有一些基本的操作权限"}
                };
                tbRoles.ForEach(r => context.TbRoles.Add(r));
                var tbUserRole = new List<TbUserRole> {
                    new TbUserRole{UserId=1,RoleId=1},
                    new TbUserRole{UserId=1,RoleId=2},
                    new TbUserRole{UserId=2,RoleId=2}
                };
                tbUserRole.ForEach(ur => context.TbUserRoles.Add(ur));
                context.SaveChanges();
            }
        }
    }
    2.App.Config配置文件
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
        </sectionGroup>
      </configSections>
      <spring>
    
        <context>
    
                     <!--assembly://程序集名称/文件命名空间名称/文件的名称+.xml-->
                     <!--注意文件必须设置为嵌入的资源-->
          <resource uri="assembly://ConsoleApplication42/ConsoleApplication42.Config/BLL.xml" />
          <!--<resource uri="/Config/BLL.xml"/>-->
    
        </context>
        <objects xmlns="http://www.springframework.net" />
        <!--必要-->
      </spring>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
      </startup>
      <entityFramework>
        <contexts>
          <context type="ConsoleApplication42.MyDbContext,ConsoleApplication42" disableDatabaseInitialization="false">
            <databaseInitializer type="ConsoleApplication42.Initializer,ConsoleApplication42"></databaseInitializer>
          </context>
        </contexts>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="(localdb)Projectsv13" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <connectionStrings>
        <add name="MyDbContext" connectionString="Data Source=(localdb)ProjectsV13;Initial Catalog=People1;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient" />
      </connectionStrings>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Spring.Core" publicKeyToken="65e474d141e25e07" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.1.45000" newVersion="2.0.1.45000" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    3.BLL.xml
    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net">
     
      <!--产生产品结构所需的各类风险因子,标的因子,曲线因子 start-->
      <object id="dbContext" type="ConsoleApplication42.MyDbContext,ConsoleApplication42" >
       
      </object>
     <object id="Initializer" type="ConsoleApplication42.Initializer,ConsoleApplication42" >
       <property name="dbContext" ref="dbContext"/>
      </object>
      
    </objects>
    
    4.调用
    using Spring.Context;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication42
    {
        class Program
        {
            static void Main(string[] args)
            {
                //new Initializer();
                var ctx = Spring.Context.Support.ContextRegistry.GetContext();
                var init =(Initializer) ctx["Initializer"];
                //初始化数据库或者数据
                init.InitData(true);
            }
        }
    }
  • 相关阅读:
    mvc使用model进行数据的增加修改的方法
    c#导出word在iis部署上报异常
    做个转圈圈的咚咚
    VS2008中AJAX的部署问题(工具箱中无AJAX Extensions选项卡)
    关于 AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. 错误
    ASP.NET关于继承DropDownList的自定义DDL控件
    线性表顺序表示的C#实现(参考数据结构(C语言版))
    WORD2003出现的乱码
    线性表链式表示的C#实现(参考数据结构(C语言版))
    有错误先找自己的原因(若你百度不出为什么vista开网页慢,可以来试试这方法)
  • 原文地址:https://www.cnblogs.com/kexb/p/5867097.html
Copyright © 2011-2022 走看看