2014-01-30 37 views
0

我正在做我的第一步与流利Api,我想了解如何做到以下几点:这是我的模型。流利的API EF 6 - 如何配置1:M(M是同一类型)

public class Person 
{ 
    public int Id {get ; set;} 
    public List<View> Viewers {get; set;} 
} 

public class View 
{ 
    public int Id {get; set;} 
    public Person Viewer {get; set;} 
} 

这是对我的模型的简化,我想跟踪访问其他一些配置文件的Person。我想知道每个看过他们档案的人。

我已经试过这样:

var view = modelBuilder.Entity<View>(); 
     view.HasKey(v=>v.Id); 

var person = modelBuilder.Entity<Person>(); 
     person.HasKey(r => r.Id); 
     person.HasMany(t => t.Viewers).WithRequired(t=>t.Viewer); 

我知道这似乎超级无聊的,但是从我的代码,我希望能够浏览:

人 - >观众(让我们观众1) - >观众,等等......

这是正确的做法吗?

感谢先进!

回答

1

试试这个

public class Person 
{ [Key] 
    public int Id { get; set; } 
    public ICollection<View> Viewers { get; set; } 
} 

public class View 
{ [Key] 
    public int Id { get; set; } 
    public int ViewerId { get; set; } //this is a ForeingKey 
    public Person Viewer { get; set; } 
} 

public class MyDbContext : DbContext 
{ 
    public DbSet<Person> Persons { get; set; } 
    public DbSet<View> Views { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<View>().HasRequired(a => a.Viewer).WithMany().HasForeignKey(a => a.ViewerId); 
     base.OnModelCreating(modelBuilder); 
    } 
} 

你可以做同样的DataAnnotation属性,然后将其简化版,需要用流利的API。

public class View 
{ 
    public int Id { get; set; } 
    public int ViewerId { get; set; } 
    [ForeignKey("ViewerId")] // here is a foreignkey property 
    [InverseProperty("Viewers")] // here is a navigation property in Person class 
    public Person Viewer { get; set; } 
} 
相关问题