Entity Framework(Fluent API)
2017-04-25 13:37 huoit 阅读(458) 评论(0) 编辑 收藏 举报一、概述
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; } }
1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/xmai/