zoukankan      html  css  js  c++  java
  • EF CodeFirst Dome学习

    创建ConsoleDome控制台应用程序

    从NuGet包管理器安装EntityFramework

    创建DbContextDome类并继承DbContext

    public class DbContextClass : DbContext
        {
            /// <summary>
            /// ConnectionString就是在config中设置的数据库链接字符串
            /// </summary>
            public DbContextClass()
                : base("ConnectionString")
            { }
    
            public DbSet<user> user { get; set; }
    
            public DbSet<BlogModel> blog { get; set; }
        }
    

    设置config

    <connectionStrings>
        <add name="ConnectionString" connectionString="server=.;database=EFCodeFirstDB;uid=***;pwd=***" providerName="System.Data.SqlClient"/>
      </connectionStrings>
    

    创建实体模型

     public class user
        {
            public int id { get; set; }
    
            public string username { get; set; }
    
            public string pwd { get; set; }
    
            [Column(TypeName = "nvarchar")]
            [MaxLength(200)]
            public string Email { get; set; }
            public string pwdd { get; set; }
        }
    
     public class BlogModel
        {
            public int id { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public string Tiele { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public string TieleUrl { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public string Content { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public string ImgUrl { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public DateTime CreateDate { get; set; }
            /// <summary>
            /// 
            /// </summary>
            public string ReadNumber { get; set; }
        }
    

      在程序包管理器控制台执行Enable-Migrations来创建Configuration配置ef

    最后执行Update-Database -Verbose来更新数据库

    附加codefirst命令

    一、Enable-Migrations

      说明:为项目启用迁移。此命令为项目添加Migrations文件夹,其中包括两个文件:

        Configuration类:此类允许针对上下文配置迁移的行为

        InitialCreate迁移:此迁移在启用迁移之前生成。如果在启用迁移之前没有生成数据库,则不会将此文件加入到项目中,而是在首次调用"Add-Migration"命令时生成。

      语法:Enable-Migrations

    二、Add-Migration

      说明:根据上一次迁移以来对模型所做的更改,为下一次迁移搭建基架。

      语法:Add-Migration "[Name]"

         Name:迁移显示名字,将与当前生成文件时间戳构成生成的迁移文件名

    三、Update-DataBase

      说明:将所有挂起的迁移应用与数据库

      语法:Update-Database -[Option]

         Option:Vcrbose 在控制台显示迁移所运行的SQL

              TargetMigration:[Name] 迁移到特定的版本,如果需要回滚到空数据库,则可以将[Name]写为$InitialDatabase

              Script 是迁移生成脚本而不执行

              SourceMigration:[Name]源迁移

    四、自动迁移

      说明:在部署应用程序时希望在应用程序启动时通过虽有挂起的迁移自动升级数据库

      代码:Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, Configuration>()); 

    五、性能问题

           EFlinq的性能远不如sql,在EF中有SqlQuery接口,查询效率高出很多,另外AsNoTracking设置不跟踪查询(只做查询使用)。在EF中如果只是为了筛选实体或者改变实体的变量不要使用ToList,效率极低,用AsEnumerable或AsQueryable。

  • 相关阅读:
    spoj LCS2
    spoj SUBLEX
    spoj NSUBSTR
    bzoj 2882: 工艺【SAM】
    poj 3294 Life Forms【SA+二分】
    poj 3415 Common Substrings【SA+单调栈】
    poj 2774 Long Long Message【SA】
    poj 2406 Power Strings【kmp】
    poj 1743 Musical Theme【二分+SA】
    hdu 3622 Bomb Game【二分+2-SAT+tarjan】
  • 原文地址:https://www.cnblogs.com/jiaxuekai/p/7486029.html
Copyright © 2011-2022 走看看