2013-02-15 1 views
0

Я использую код из учебника, чтобы попробовать все, что мне нужно в моем реальном проекте. У меня есть стол в моем DataBase с большим количеством (16) Foreign Keys В нем я должен воссоздать целое DataBase с помощью ADO.NET EF, и теперь я немного застрял в этом конкретном случае. Вот код, который я использую для тестирования целей:ADO.NET Entity Framework несколько FK в одной таблице

public class Blog 
    { 
     public int BlogId { get; set; } 
     public string Name { get; set; } 
     public string Url { get; set; } 

     public int UserId { get; set; } 
     public virtual User User { get; set; } 

     public virtual List<Post> Posts { get; set; } 
    } 

    public class Post 
    { 
     public int PostId { get; set; } 
     public string Title { get; set; } 
     public string Content { get; set; } 

     //public int BlogId { get; set; } 
     public virtual Blog Blog { get; set; } 

     //public int BlogId1 { get; set; } 
     public virtual Blog Blog1 { get; set; } 

     //public int BlogId2 { get; set; } 
     public virtual Blog Blog2 { get; set; } 

     //public int BlogId3 { get; set; } 
     public virtual Blog Blog3 { get; set; } 

     //public int BlogId4 { get; set; } 
     public virtual Blog Blog4 { get; set; } 
    } 

Я прокомментировал int свойства, как это кажется, что я их не нужно. Выполнение этого кода я получаю следующее:

enter image description here

Таким образом, есть две вещи, что касается меня в данный момент - это способ добавить несколько Foreign Keys за одним столом, и если да - два ряда подчеркнуты красным - Почему у меня есть Blog_BlogId и Blog_BlogId1, прежде чем я получу ожидаемый Blog1_.., Blog2_...?

ответ

0

Хорошо, я потерял сообщение здесь, откуда я получил решение, но в этом конкретном случае это похоже на какое-то соглашение об именах, которое я должен раскомментировать прокомментированный код и изменить имена без использования цифр или подчеркивания. Затем в OnModelCreating случае добавьте этот код столько раз, сколько мне нужно:

modelBuilder.Entity<Post>().HasRequired(c => c.Blog) 
            .WithMany(m => m.Posts) 
            .HasForeignKey(c => c.BlogId) 
            .WillCascadeOnDelete(); 

      modelBuilder.Entity<Post>().HasRequired(c => c.Blogged) 
              .WithMany() 
              .HasForeignKey(c => c.BloggedId) 
              .WillCascadeOnDelete(false); 

Обратите внимание, что я изменить имя свойства и экземпляр класса имя каждый раз, когда я добавить новую запись для внешнего ключа.