目录
文章列表:
- 创建EF数据模型
Creating an Entity Framework Data Model - 实现基础的CRUD功能
Implementing Basic CRUD Functionality - 排序、筛选和分页
Sorting, Filtering, and Paging - 连接恢复和命令拦截
Connection Resiliency and Command Interception - Code First 迁移和部署
Code First Migrations and Deployment - 创建更复杂的数据模型
Creating a More Complex Data Model - 读取相关数据
Reading Related Data - 更新相关数据
Updating Related Data - 使用异步和存储过程
Async and Stored Procedures - 处理应用程序并发
Handling Concurrency - 实现继承
Implementing Inheritance - 高级EF功能
Advanced Entity Framework Scenarios
完整的数据模型
数据模型
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel.DataAnnotations; 4 using System.ComponentModel.DataAnnotations.Schema; 5 6 namespace ContosoUniversity.Models 7 { 8 public class Student 9 { 10 public int ID { get; set; } 11 [Required] 12 [StringLength(50)] 13 [Display(Name = "Last Name")] 14 public string LastName { get; set; } 15 [Required] 16 [StringLength(50, ErrorMessage = "First name cannot be longer than 50 characters.")] 17 [Column("FirstName")] 18 [Display(Name = "First Name")] 19 public string FirstMidName { get; set; } 20 [DataType(DataType.Date)] 21 [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 22 [Display(Name = "Enrollment Date")] 23 public DateTime EnrollmentDate { get; set; } 24 25 [Display(Name = "Full Name")] 26 public string FullName 27 { 28 get 29 { 30 return LastName + ", " + FirstMidName; 31 } 32 } 33 34 public virtual ICollection<Enrollment> Enrollments { get; set; } 35 } 36 }
1 using System.ComponentModel.DataAnnotations; 2 3 namespace ContosoUniversity.Models 4 { 5 public enum Grade 6 { 7 A, B, C, D, F 8 } 9 10 public class Enrollment 11 { 12 public int EnrollmentID { get; set; } 13 public int CourseID { get; set; } 14 public int StudentID { get; set; } 15 [DisplayFormat(NullDisplayText = "No grade")] 16 public Grade? Grade { get; set; } 17 18 public virtual Course Course { get; set; } 19 public virtual Student Student { get; set; } 20 } 21 }
1 using System.Collections.Generic; 2 using System.ComponentModel.DataAnnotations; 3 using System.ComponentModel.DataAnnotations.Schema; 4 5 namespace ContosoUniversity.Models 6 { 7 public class Course 8 { 9 [DatabaseGenerated(DatabaseGeneratedOption.None)] 10 [Display(Name = "Number")] 11 public int CourseID { get; set; } 12 13 [StringLength(50, MinimumLength = 3)] 14 public string Title { get; set; } 15 16 [Range(0, 5)] 17 public int Credits { get; set; } 18 19 public int DepartmentID { get; set; } 20 21 public virtual Department Department { get; set; } 22 public virtual ICollection<Enrollment> Enrollments { get; set; } 23 public virtual ICollection<Instructor> Instructors { get; set; } 24 } 25 }
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel.DataAnnotations; 4 using System.ComponentModel.DataAnnotations.Schema; 5 6 namespace ContosoUniversity.Models 7 { 8 public class Instructor 9 { 10 public int ID { get; set; } 11 12 [Required] 13 [Display(Name = "Last Name")] 14 [StringLength(50)] 15 public string LastName { get; set; } 16 17 [Required] 18 [Column("FirstName")] 19 [Display(Name = "First Name")] 20 [StringLength(50)] 21 public string FirstMidName { get; set; } 22 23 [DataType(DataType.Date)] 24 [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 25 [Display(Name = "Hire Date")] 26 public DateTime HireDate { get; set; } 27 28 [Display(Name = "Full Name")] 29 public string FullName 30 { 31 get { return LastName + ", " + FirstMidName; } 32 } 33 34 public virtual ICollection<Course> Courses { get; set; } 35 public virtual OfficeAssignment OfficeAssignment { get; set; } 36 } 37 }
1 using System.ComponentModel.DataAnnotations; 2 using System.ComponentModel.DataAnnotations.Schema; 3 4 namespace ContosoUniversity.Models 5 { 6 public class OfficeAssignment 7 { 8 [Key] 9 [ForeignKey("Instructor")] 10 public int InstructorID { get; set; } 11 [StringLength(50)] 12 [Display(Name = "Office Location")] 13 public string Location { get; set; } 14 15 public virtual Instructor Instructor { get; set; } 16 } 17 }
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel.DataAnnotations; 4 using System.ComponentModel.DataAnnotations.Schema; 5 6 namespace ContosoUniversity.Models 7 { 8 public class Department 9 { 10 public int DepartmentID { get; set; } 11 12 [StringLength(50, MinimumLength=3)] 13 public string Name { get; set; } 14 15 [DataType(DataType.Currency)] 16 [Column(TypeName = "money")] 17 public decimal Budget { get; set; } 18 19 [DataType(DataType.Date)] 20 [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 21 [Display(Name = "Start Date")] 22 public DateTime StartDate { get; set; } 23 24 public int? InstructorID { get; set; } 25 26 public virtual Instructor Administrator { get; set; } 27 public virtual ICollection<Course> Courses { get; set; } 28 } 29 }