using System.Data.Entity;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
public static void Main()
using (var context = new EntityContext())
Student student = new Student()
EnrollmentDate = DateTime.Now
Teacher teacher = new Teacher()
context.People.Add(student);
context.People.Add(teacher);
var students = context.People.OfType<Student>().ToList();
var teachers = context.People.OfType<Teacher>().ToList();
FiddleHelper.WriteTable(students);
FiddleHelper.WriteTable(teachers);
public class EntityContext : DbContext
public EntityContext() : base(FiddleHelper.GetConnectionStringSqlServer())
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Entity<Student>().Map(m =>
m.MapInheritedProperties();
modelBuilder.Entity<Teacher>().Map(m =>
m.MapInheritedProperties();
public abstract class Person
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
public string FullName { get; set; }
public class Student : Person
public DateTime EnrollmentDate { get; set; }
public class Teacher : Person
public DateTime HireDate { get; set; }