博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework框架Code First Fluent API
阅读量:6484 次
发布时间:2019-06-23

本文共 1612 字,大约阅读时间需要 5 分钟。

在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
"
);

转载地址:http://drnuo.baihongyu.com/

你可能感兴趣的文章
pycharm如何新项目如何不默认创建虚拟环境(吐槽)
查看>>
Loadrunner检查点小结(很经典)
查看>>
MySQL字段类型详解
查看>>
ORACLE 的游标
查看>>
虚拟机安装的UBUNTU全屏的方法:
查看>>
java虚拟机类加载器
查看>>
ASP.NET状态管理之八(会话Session)
查看>>
转载:大型网站架构演变和知识体系
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>