Code First实体与数据表之间的映射关系

在Code First方法中,还可以通过Fluent API的方式来处理实体与数据表之间的映射关系。

要使用Fluent API必须在构造自定义的DbContext时,重写OnModelCreating方法,在此方法体内调用Fluent API。

如下面代码所示:

public class BlogDbContext : DbContext
{
public BlogDbContext()
: base("name=BlogDB2005")
{

}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

//do something
base.OnModelCreating(modelBuilder);
}
}
//下面来看一些简单的例子
//主键
modelBuilder.Entity<BlogUser>().HasKey(user => user.UserId);
//联合主键
//联合主键
modelBuilder.Entity<BlogUser>().HasKey(user => new { user.UserId, user.BlogName });
//字段非空
//要求属性必填
modelBuilder.Entity<BlogUser>().Property(user => user.BlogName).IsRequired();
//设定字段最大长度
modelBuilder.Entity<BlogUser>().Property(user => user.BlogName).HasMaxLength(20);
//设置复杂属性,相当数据特性中的ComplexType
modelBuilder.ComplexType<Address>();
//属性字段不映射到数据表字段,相当于数据特性中的NotMapped
modelBuilder.Entity<BlogUser>().Ignore(user => user.MyProperty);
//设置字段是否自动增长
//设置自动增长,如不需要自动增长,则设为 DatabaseGeneratedOption.None
modelBuilder.Entity<BlogUser>().Property(user => user.UserId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
//设置外键
///产生一对多的关系
modelBuilder.Entity<Post>()
.HasRequired(p =>p.BlogUser)
.WithMany(user => user.Posts)
.HasForeignKey(p => p.UserId);

///与上面等效
//modelBuilder.Entity<BlogUser>()
// .HasMany(user => user.Posts)
// .WithRequired(p => p.BlogUser)
// .HasForeignKey(p => p.UserId);

//设定实体映射到数据库中的表名
modelBuilder.Entity<BlogUser>().ToTable("MyUser");
//设置实体属性映射到数据库中的列名
modelBuilder.Entity<BlogUser>()
.Property(user => user.Description)
.HasColumnName("userDescription")
.HasColumnType("ntext");





转载于:https://www.cnblogs.com/smailxiaobai/archive/2012/02/27/2369422.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值