2014-01-30 40 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; } 
} 
相關問題