11.2 Fluent API Cheat Sheet
11.2 Fluent API Cheat Sheet
Basics
public
class
PlutoContext
:
DbContext
{
protected
override
void
OnModelCreating(DbModelBuilder
modelBuilder)
{
modelBuilder
.Entity<Course>
.Property(t
=>
t.Name)
.IsRequired();
}
}
Tables
Entity<Course>.ToTable(“tbl_Course”,
“catalog”);
Primary Keys
Entity<Book>.HasKey(t
=>
t.Isbn);
Entity<Book>.Property(t
=>
t.Isbn)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
1
Fluent API By: Mosh Hamedani
Columns
Entity<Course>.Property(t
=>
t.Name)
.HasColumnName(“sName”)
.HasColumnType(“varchar”)
.HasColumnOrder(2)
.IsRequired()
.HasMaxLength(255);
One-to-many Relationship
Entity<Author>
.HasMany(a
=>
a.Courses)
.WithRequired(c
=>
c.Author)
.HasForeignKey(c
=>
c.AuthorId);
Many-to-many Relationship
Entity<Course>
.HasMany(c
=>
c.Tags)
.WithMany(t
=>
t.Courses)
.Map(m
=>
{
m.ToTable(“CourseTag”);
m.MapLeftKey(“CourseId”);
m.MapRightKey(“TagId”);
});
2
Fluent API By: Mosh Hamedani
One-to-zero/one Relationship
Entity<Course>
.HasOptional(c
=>
c.Caption)
.WithRequired(c
=>
c.Course);
One-to-one Relationship
Entity<Course>
.HasRequired(c
=>
c.Cover)
.WithRequiredPrincipal(c
=>
c.Course);
Entity<Cover>
.HasRequired(c
=>
c.Course)
.WithRequiredDependent(c
=>
c.Cover);