您的位置:首页 > 其它

EF-Code First 入门

2016-07-25 18:07 323 查看
本文程序基于VS2015、EF6.1,本文不做过多深入讨论,只是个入门。

EF 就是微软的 EntityFramework,主要分为 DB First,Model First,Code First。之前也只是简单的用 DB First,后来发现 Code First 才是大势所趋,毕竟对于 Coder 来说代码实现更好点,而且迁移很好用。

首先是程序结构



一、Models

先弄2个Model,对应于2张表的结构

public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public virtual ICollection<ProductModel> Products { get; set; }
}


public class ProductModel
{
public int Id { get; set; }
public string Name { get; set; }
}


二、Mapping

这里主要是设置每个字段的一些限制,比如是否可为空,外键关系啊等等,有些人喜欢写在 Context 的 OnModelCreating 里,但是我还是喜欢单独写成 Mapping 里,这样更清晰一些

public class UserModelMap : EntityTypeConfiguration<UserModel>
{
public UserModelMap()
{
//this.ToTable("dbo.User");
this.HasKey(u => u.Id);

this.Property(u => u.Name).IsRequired();
this.HasMany(u => u.Products);
}
}


public class ProductModelMap : EntityTypeConfiguration<ProductModel>
{
public ProductModelMap()
{
this.HasKey(p => p.Id);

this.Property(p => p.Name).IsRequired();
}
}


三、Context

先在 App.config 里添加一个连接字符串,请注意正常的 SqlServer 和 LocalDB 连接字符串不一样

<connectionStrings>

<add name="EFCodeFirst"connectionString="Server=.;Database=EFCodeFirst;Integrated Security=SSPI"providerName="System.Data.SqlClient"/>

</connectionStrings>

创建一个 Context

public class EFContext : DbContext
{
public DbSet<UserModel> Users { get; set; }

public DbSet<ProductModel> Products { get; set; }

public EFContext()
: base("name=EFCodeFirst")
{

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Entity<UserModel>()

modelBuilder.Configurations.Add(new UserModelMap());
modelBuilder.Configurations.Add(new ProductModelMap());
}
}


四、创建

运行后就可以创建一个数据库了



五、迁移

开发过程中总是会改数据库的,所以就需要用到迁移

在 Package Manager Console 中执行 Enable-Migrations,然后目录中就会出现 Migrations 文件夹了

每次执行迁移时都会生成一个文件,可以用来恢复,这样也有个记录,我觉得这点还是很强大的

六、常用的命令

从网上找到的,不全

安装EF

PM> Install-Package EntityFramework Or NuGet

启用Migrations

PM> Enable-Migrations -EnableAutomaticMigrations

添加Migration

PM> Add-Migration InitialCreate(名字)

更新

PM> Update-Database -Verbose

获取指定版本

PM> Update-Database –TargetMigration:"201606220937315_InitialCreate.cs"(名字)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: