2017-02-18 9 views
1

Скажем, у меня есть две модели - Дом и пользователяEntity Framework Code First - Definining два различных отношения

class User 
{ 
    [Key, Required] 
    public Guid UserId { get; set; } 
    public virtual House ILiveHere { get; set; } 

    [Required] 
    public string Firstname { get; set; } 
    [Required] 
    public string Lastname { get; set; } 
} 

И

class House 
{ 
    [Key, Required] 
    public Guid HouseId { get; set; } 

    [Required] 
    public virtual User HouseOwner { get; set; } 
} 

Многие пользователи могут быть связаны с одним домом, так что это одно для многих. Однако есть и другая связь, которая является взаимно-однозначным отношением между владельцем дома и домом. Как бы вы определили это с аннотациями данных? Благодаря

ответ

1

Дайте это попробовать ... (это EF ядро)

public class MyDbContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<House> Houses { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlServer(@"..."); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<House>().HasMany(x => x.Residents).WithOne(x => x.House); 
    } 
} 

public class User 
{ 
    [Key, Required] 
    public Guid UserId { get; set; } 
    public virtual House House { get; set; } 

    [Required] 
    public string Firstname { get; set; } 
    [Required] 
    public string Lastname { get; set; } 
} 

public class House 
{ 
    [Key, Required] 
    public Guid HouseId { get; set; } 

    public List<User> Residents { get; set; } 

    [Required] 
    public virtual User HouseOwner { get; set; } 
}