zoukankan      html  css  js  c++  java
  • Entity Framework 配置关系(1对1,1对0)

    Entity Framework 配置关系(1对1,1对0)

      实体之间的关系对应数据库表的关系,有1:0,1:1,1:N,N:N这几种。这里介绍1:0、1:1这两种配置关系。

      举例说明:Employee表示员工,Account表示通讯账号。有些员工使用通讯账号,但是有些员工不适用这些通讯账号。从员工的角度来观察,员工Employee与通讯账号Account之间的关系就是一个员工对应一个通讯账号(1:1),或者一个员工没有铜须你账号(1:0)。从通讯账号Account的角度来观察,一个通讯账号对应一个员工(1:1)。

    (1)实体类:Employee

    1 public class Employee
    2 {
    3     public int Id { get; set; }
    4 
    5     public string Name { get; set; }
    6 
    7     public virtual Account Account { get; set; }
    8 }

    (2)实体类:Account

     1 public class Account
     2 {
     3     public int Id { get; set; }
     4 
     5     public string UserName { get; set; }
     6 
     7     public string Password { get; set; }
     8 
     9     public virtual Employee Employee { get; set; }
    10 }

    (3)映射Employee

     1 public class EmployeeMap : EntityTypeConfiguration<Employee>
     2 {
     3     public EmployeeMap()
     4     {
     5         this.ToTable("Employee");
     6 
     7         this.HasKey(p => p.Id);
     8 
     9         this.Property(p => p.Id).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    10         this.Property(p => p.Name).IsRequired().HasMaxLength(63);
    11     }
    12 }

    (4)映射Account

     1 public class AccountMap : EntityTypeConfiguration<Account>
     2 {
     3     public AccountMap()
     4     {
     5         this.ToTable("Account");
     6 
     7         this.HasKey(p => p.Id);
     8 
     9         this.Property(p => p.Id).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    10         this.Property(p => p.UserName).IsRequired().HasMaxLength(63);
    11         this.Property(p => p.Password).IsRequired().HasMaxLength(63);
    12 
    13         this.HasRequired(m => m.Employee)
    14             .WithOptional(m => m.Account)
    15             .Map(m => m.MapKey("AccountId"))
    16             .WillCascadeOnDelete(true);
    17     }
    18 }

    (5)DbContext

     1 public class EntFraContext : DbContext
     2 {
     3     public IDbSet<Account> AccountSet { get; set; }
     4 
     5     public IDbSet<Employee> EmployeeSet { get; set; }
     6 
     7     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     8     {
     9         modelBuilder.Configurations.Add(new AccountMap());
    10         modelBuilder.Configurations.Add(new EmployeeMap());
    11 
    12         base.OnModelCreating(modelBuilder);
    13     }
    14 }

    分类: EntityFramework

  • 相关阅读:
    Java实现稳定婚姻问题
    Java实现二分图的最大匹配
    Java实现二分图的最大匹配
    Java实现二分图的最大匹配
    Java实现二分图的最大匹配
    Java实现二分图的最大匹配
    OpenGL与Directx的区别
    为什么API多用C而不是C++,为什么C++程序大多不使用异常
    一次C#和C++的实际应用性能比较(C++允许我们使用任何手段来提高效率,只要愿意做出足够的努力)
    图形界面编程成就了C++
  • 原文地址:https://www.cnblogs.com/grj001/p/12223624.html
Copyright © 2011-2022 走看看