小雪3

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。

posted @ 2017-09-06 17:36  net小雪  阅读(694)  评论(1编辑  收藏  举报

小雪4