• EF+Mysql+DDD框架搭建(一)——code first准备


    准备mysql for vs工具

    mysql-connector-net-6.8.3.msi 网盘地址:http://pan.baidu.com/s/1jHDWINk

    mysql-for-visualstudio-1.1.4.msi 网盘地址:http://pan.baidu.com/s/1eSwemno

    打开VS工具-》库程序包管理器-》程序包管理器控制平台

    安装EF和mysql依赖包

    1.PM>  Install-Package MySql.Data.Entity -Version 6.9.8

    2.PM>  Install-Package EntityFramework

    安装完成之后配置数据库连接字符串connectionStrings

    <connectionStrings>
        <add name="MyContext" connectionString="Data Source=localhost;port=3307;Initial Catalog=mybook;user id=root;password=root;" providerName="MySql.Data.MySqlClient" />
      </connectionStrings>

    在web项目中model文件夹下创建Users实体和MyUserContext上下文对象

    Users实体类

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace PMS.Web.Models
    {
        /// <summary>
        /// users实体对象
        /// </summary>
        public class Users
        {
            public int Id { get; set; }
            public string UserName { get; set; }
    
            //默认string映射到mysql里是longtext类型的,加长度之后就变成varchar了
            [MaxLength(30)]
            public string PassWord { get; set; }
        }
    }

    MyUserContext上下文对象

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    
    namespace PMS.Web.Models
    {
        [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
        public class MyUserContext : DbContext
        {
            public MyUserContext()
                : base("name=MyContext")//web.config中connectionstring的名字
            {
            }
    
            public DbSet<Users> Users { get; set; }
        }
    }

    HomeController.cs

    using PMS.Web.Models;
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace PMS.Web.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                InitData();
                return View();
            }
    
            private void InitData()
            {
                Database.SetInitializer(new DropCreateDatabaseAlways<MyUserContext>());
                var context = new MyUserContext();
                //插入一行值
                context.Users.Add(new Users { UserName = "EF6-MySQL-Code-First" });
                context.SaveChanges();
            }
        }
    }

    运行项目,如果出现“无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。”

    在Visual Studio中对其进行迁移

    1.PM> Enable-Migrations

    2.配置Configuration的AutomaticMigrationsEnabled属性

    namespace PMS.Web.Migrations
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Migrations;
        using System.Linq;
    
        internal sealed class Configuration : DbMigrationsConfiguration<PMS.Web.Models.MyUserContext>
        {
            public Configuration()
            {
                AutomaticMigrationsEnabled = true;
            }
    
            protected override void Seed(PMS.Web.Models.MyUserContext context)
            {
                //  This method will be called after migrating to the latest version.
    
                //  You can use the DbSet<T>.AddOrUpdate() helper extension method
                //  to avoid creating duplicate seed data. E.g.
                //
                //    context.People.AddOrUpdate(
                //      p => p.FullName,
                //      new Person { FullName = "Andrew Peters" },
                //      new Person { FullName = "Brice Lambson" },
                //      new Person { FullName = "Rowan Miller" }
                //    );
                //
            }
        }
    }

    3.PM> Update-Database -Force

    重新运行项目。此时已经可以正常运行

  • 相关阅读:
    linux 安装 Chrome
    J2EE版本
    Java 源码解析之局部变量检查
    /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】
    Linux 内核编译
    linux 汇编
    /etc/ethers【地址映射】
    Linux LAMP 搭建
    Linux ftp 使用
    linux apache
  • 原文地址:https://www.cnblogs.com/sucessing/p/5345933.html
Copyright © 2020-2023  润新知