Welcome

首页 / 软件开发 / .NET编程技术 / 使用NuGet助您玩转代码生成数据:Entity Framework 之Code First

使用NuGet助您玩转代码生成数据:Entity Framework 之Code First2013-11-11 博客园 alert(dong)在Code First中,编写完代码并运行之后,我们的Model会同步到Db中,但是往往我们 需要的是编写完Model就生成数据库,而不是等UI部分完成并运行之后才看到数据库,借助NuGet程序包管理器 可以让我们即时完成Code=>DB。

准备:1.本人开发工具为VS2012,使用的是.NET Framework 4.5 (EF5);

2.然后确保已在VS扩展中安装了最新的“NuGet程序包管理器”;

3.常用的三行 NuGet用于EF命令(当然可以直接用命令“get-help EntityFramework”获取):“Enable-Migrations”   --在对应项目中启用、“Add-Migration <名称>”  --搭建基架、“Update-Database”  --提交(应用基于代码的迁移)

4.新建类库项目“CodeFirst”。

开始:

1. 在vs打开“程序包管理控制台”,输入“get-help NuGet”回车,可以查看一些命令。

2. 在程序包管理控制台输入“Install-Package EntityFramework”,此过程必须保证机子联网,如未联 网,本人有个法子,就是在项目中新建Entity Framework(如“ADO.NET实体数据模型”)项,然后再删除该 项即可。上述命令执行前确保如下图所示说明

此时可以看到项目多了个文件“packages.config”,同样在引用下多了“EntityFramework”的程序 集。而在解决方案目录下则多了文件夹“packages”(物理目录,非解决方案目录),假如我们要拷贝项目, 则应连同该目录拷贝,否则到别的目录下再编译项目之前仍然重新需要执行“Install-Package EntityFramework”,这是在将解决方案添加到源码管理时需要注意的地方。

3.项目下添加项目文件夹 “Models”,并在该文件夹编写以下三个类与一个枚举(EF5对枚举的支持是非常棒的):

/// <summary>/// 性别/// </summary>public enum Gender{Female = 0,Male,LadyBoy}
/// <summary>/// 人名/// </summary>public class PersonName{public string FirstName { get; set; }public string LastName { get; set; }public string FullName{get{return string.Format("{0} {1}", FirstName, LastName);}}}
public abstract class BaseModel{public BaseModel(){this.CreatedTime = DateTime.Now;this.LastUpdatedTime = DateTime.Now;}public DateTime CreatedTime { get; set; }public string Creater { get; set; }public DateTime LastUpdatedTime { get; set; }public string LastUpdater { get; set; }}
[Table("UserInfo")]public class UserModel : BaseModel{[Key][DatabaseGenerated(DatabaseGeneratedOption.None)]public string LoginName { get; set; }[MaxLength(50)]public string Password { get; set; }public int Age { get; set; }public Gender Gender { get; set; }public DateTime? LastLoginTime { get; set; }public PersonName Name { get; set; }}