asp.net vs2010中如何使用英孚的代码

  介绍

这篇文章将为大家详细讲解有关asp.net vs2010中如何使用英孚代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

EF4.3中主要的新特性,允许通过CodeFirst创建的数据库可以与你的代码模型一起增量进化。下面小编来讲解下asp.netvs2010中怎么使用efcodefirst吗?

asp.netvs2010中怎么使用efcodefirst

移除的EdmMetadata表:

如果你允许简单地运行程序来通过CodeFirst创建数据库(即没有显式启用迁移),那么,就会获得作为迁移一部分特性的,数据库架构生成的好处。

修复了GetDatabaseValues:

在早期版本中,如果你的实体和上下文没有定义在同一个命名空间中,这个方法调用就会失败,这个问题已经被修复,使用GetDatabaseValues不再需要定义在同一个命名空间下。

修复了对DbSet名字中Unicode字符的支持:

在早期版本中,当在一个名字中包含有Unicode字符的DbSet中进行查询的时候,会导致异常,这个问题已经被修复了。

在非公共属性上的数据标注问题:

默认情况下,asp.netCodeFirst不会包含私有的,保护的,或者内部的属性,即使在你的模型中手工包含的情况下。在早期的版本中使用FluentAPI将会忽略这类成员上的任何数据标注。这个问题已经被修复,现在CodeFirst将会处理在模型中手工定义的私有,保护,内部的成员了。

更多的配置设置:

安装EF4.3

工具→程序包管理器→程序包管理器控件台(需要NuGet更新到最新)

键入安装EF的命令Install-PackageEntityFramework(升级EF的命令& # 39;Update-PackageEntityFramework& # 39;)

由实体生成/更新数据库表

1。编写实体类

namespaceTestDb   {   publicclassTestDbContext: DbContext   {//publicTestDbContext():基础(“TestDbContext") {}//TestDbContext是配置里的数据库连接名称,默认为DbContext的名字:TestDbContext   publicDbSetBooks{获取;设置;}   }   publicclassBook   {   publicintBookId{获取;设置;}   (最大长度(200))   publicstringTitle{获取;设置;}   publicdoublePrice{获取;设置;}   (最大长度(60)]   publicStringNote5{获取;设置;}   (NotMapped)   publicStringNotMappedTest{获取;设置;}   }   }

2。在程序包管理器控件台启用迁移Enable-Migrations(如果已经存在需要加上force),常用部分参数如下(get-helpEnable-Migrations-detailed获取帮助):

projectname:““指定项目

force如存在则覆盖迁移配置(已经运行过Enable-Migrations生成了配置)

3。新建迁移点Add-MigrationBook-ISBN(图书isbn是任意一个名称标记,迁移点名称),常用部分参数如下(get-helpAdd-Migration-detailed获取帮助):

projectname:““指定项目

force如存在则覆盖可以参考http://www.52mvc.com

4。更新到数据库- database就或者Update-Database-Verbose(详细显示详细信息),常用部分参数如下(get-helpupdate-database-detailed获取帮助):

projectname:““指定项目

- script生成迁移sql语句,如Update-Database-Script生成更新的迁移sql,不执行挂起的操作

-SourceMigration:“开始迁移点,只能与- script一起使用,如Update-Database-Script-SourceMigration:美元InitialDatabase表示生成全部的迁移sql

-TargetMigration:“结束迁移点“回溯到某个迁移点,“0”表示回到空数据库

-ConnectionStringName:“配置里的数据库连接名称“指定数据库,这样不用修改代码就可实现更新到新的数据库

生成的迁移文件

当运行Add-MigrationBook-ISBN命令后生成的迁移程序如下:

namespaceEdmDb.Migrations   {   usingSystem.Data.Entity.Migrations;   publicpartialclassreName3: DbMigration   {   publicoverridevoidUp ()   {   AddColumn (“Books",“Note3", c=祝辞c.String(最大长度:60));   AlterColumn (“Books",“Title", c=祝辞c.String(最大长度:200));   DropColumn (“Books",“Note2");   Sql (this.Des (“Books",“Title",“你好“));//手动添加,增加数据库注释   }   publicoverridevoidDown ()   {   AddColumn (“Books",“Note2", c=祝辞c.String(最大长度:60));   AlterColumn (“Books",“Title", c=祝辞c.String ());   DropColumn (“Books",“Note3");   }   }   }

Des方法,添加数据库注释,这样做还要手动添加注释的语句,如果可以修改Add-Migration的处理方式就好了。

publicstaticclassDbMigrationExt   {   publicstaticstringDes (thisDbMigrationmig stringtableName、stringcolName stringDesStr)   {   stringsqlStr=癊XECsys.sp_addextendedproperty@name=n # 39; MS_Description& # 39;“   +“@ value=https://www.yisu.com/zixun/N的“+ DesStr +”, @level0type=N 'SCHEMA”、@level0name=N 'dbo”@level1type=N 'TABLE’”   +”,@level1name=N +表名+”,@level2type=N 'COLUMN @level2name=N”+ colName +“”;   returnsqlStr;   }   }

asp.net vs2010中如何使用英孚的代码