Entity Framework(Fluent API)
一、概述
Fluent API 可以理解为一种从POCO到数据库的映射约定,包括字段长度,类型,主外键等等,在EF Code First进行开发时候经常用到。
1、主键
modelBuilder.Entity<Product>().HasKey(t => t.InstructorID);
联合主键
modelBuilder.Entity<BlogUser>().HasKey(user =>new { user.UserId, user.BlogName });
2、数值主键取消数据库自增
modelBuilder.Entity<Department>().Property(t => t.DepartmentID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
3、字段最大长度
modelBuilder.Entity<Department>().Property(t => t.Name).HasMaxLength(50);
4、字段不可为null
modelBuilder.Entity<Department>().Property(t => t.Name).IsRequired();
5、复杂类型
modelBuilder.ComplexType<Address>();
6、不映射
modelBuilder.Entity<User>().Ignore(user => user.MyProperty);
7、一对多(一个用户多个地址)
modelBuilder.Entity<Post>() .HasRequired(p =>p.User) .WithMany(user => user.Posts) .HasForeignKey(p => p.UserId);
8、表名、列名列类型
modelBuilder.Entity<MyUser>().ToTable("User");
modelBuilder.Entity<User>() .Property(user => user.Description) .HasColumnName("userDescription") .HasColumnType("ntext");
9、级联删除,重写方法OnModelCreating
public class PracticeEntitys : DbContext
{
public PracticeEntitys()
: base("Name=Practice")
{ } public new Database Database
{
get { return base.Database; }
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
//base.OnModelCreating(modelBuilder);
} public DbSet<Article> Articles { get; set; } }
Entity Framework(Fluent API)的更多相关文章
- LINQ之路10:LINQ to SQL 和 Entity Framework(下)
在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术 ...
- LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...
- MVC & Entity Framework(2)- controller、Models单独DLL
继上一篇MVC & Entity Framework(1)- 开发环境之后,已经很久没更新了.接下来记录一下怎么把MVC中的controller单独拆为一个类库,然后在web项目中引用.另外, ...
- 怎样调通微信支付及微信发货通知接口(Js API)
怎样调通微信支付及微信发货通知接口(Js API) 微信支付提供了一个支付測试页面,微信支付正式使用须要測通支付.发货通知接口 .告警接口.维权接口.告警接口.维权接口非常easy.支付界面调通也相对 ...
- [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)
原文:https://en.m.wikipedia.org/wiki/Fluent_interface(英文,完整) 转载:https://zh.wikipedia.org/wiki/流式接口(中文, ...
- 连贯接口(fluent interface)的Java实现及应用。
几年前在单元测试时使用mockito和junit(使用hamcrest提供的比较方法)的时候,就用到过这样类似的语法: mockito: when(mock.someMethod("some ...
- Java链式方法 连贯接口(fluent interface)
有两种情况可运用链式方法: 第一种 除最后一个方法外,每个方法都返回一个对象 object2 = object1.method1(); object3 = object2.method2(); ob ...
- 给外行或者刚入门普及一下关于C#,.NET Framework(.NET框架),.Net,CLR,ASP,ASP.Net, VS,以及.NET Core的概念
一.概念 1. C# :C#是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序设计语言. 2..NET Framework(.NET框架):.NET framework ...
- 阿里云API网关(5)用户指南(调用 API)
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
随机推荐
- ipv6禁用导致rpcbind服务启动失败解决办法
参考文档:http://blog.51cto.com/hld1992/2055028
- sql语句 isnull(列名,'')='' /STUFF的意思
(1) SELECT SYXH,ZYHM,YEXH,ISNULL(YETZ,'') AS YETZ ,RYKSMC,RYBQMC,HZXM FROM YG_BRSYK 如果列名数据等于NULL,那么 ...
- 关于Java的基础语法整理
- Concurrent Execution
Concurrent Execution — Python 3.7.2 documentation https://docs.python.org/3/library/concurrency.html
- [cloud][sdn] network namespace
man 手册关于IP netns的介绍: http://man7.org/linux/man-pages/man8/ip-netns.8.html 一个非常好的介绍,有概念,有操作: http://c ...
- Visio 画图
流程图 圆角矩形表示"开始"与"结束" 矩形表示行动方案.普通工作环节用 菱形表示问题判断或判定(审核/审批/评审)环节 平行四边形表示输入输出 箭头代表工作流 ...
- 转:Java 集合详解
原文地址:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发 ...
- Oracle 锁的等级
ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive ...
- webpack4入门配置
下面是抄过来的,方便自己翻越 webpack4.x入门配置 1.首先npm install webpack webpack-cli webpack-dev-server -g (mac电脑用超级管 ...
- html5页面与android页面之间通过url传递参数
html5页面与android页面之间可以通过url传递参数,android将参数放在htm5的url ?后面,js获取url ?号后面的参数. 方法一: <scrīpt> /* 用途 ...