2013-02-18 3 views
0

Я работаю на mvc4 приложение с Ef5 codefirst и я не могу решить эту ошибку:Многие ошибки идентичности многих отношениях

В элемент с идентичностью «XXXX» не существует в коллекции метаданных.

Update: Я видел, что я использовал два различных контекста (объект навигации был назван Копание в хранилище, которое создает другой DbContext), вероятно, это проблема. Я изменил это, но теперь я получаю новую ошибку:

Invalid column name 'Brewery_BreweryId'.

В IntelliTrace я увидел, что эф пытается

select ..., Brewery_BreweryId from UserProfiles 

В этой колонке нет и не должно присутствовать, я хочу многие для многих, а не для многих.

Я думаю, что это связано со многими отношениями.

это пример моего кода

internal class BreweryConfiguration : EntityTypeConfiguration<Brewery> 
{ 
    public BreweryConfiguration() 
    { 
     // PK 
     HasKey(e => e.BreweryId); 

     // FK 
     HasMany(e => e.UserProfiles) 
     .WithMany() 
     .Map(m => 
     { 
      m.MapLeftKey("BreweryId"); 
      m.MapRightKey("UserId"); 
      m.ToTable("BreweryUserProfiles"); 
     }); 

    namespace Project2.DAL.Entities 
    { 
     [Table("Breweries")] 
     public class Brewery : ABrewery 
     { 
     public int BreweryId { get; set; } 
     public ICollection<UserProfile> UserProfiles { get; set; } 
     } 
    } 

    namespace Project1.DAL.Entities 
    { 
     [Table("UserProfiles")] 
     public class UserProfile : IUserProfile 
     { 

     [Key] 
     public int UserId { get; set; } 
     ... 
     } 
} 

Join table

ответ

1
c.MapLeftKey("ClassB_ID"); 
c.MapRightKey("ClassA_ID"); 

должен быть

c.MapLeftKey("ClassA_ID"); 
c.MapRightKey("ClassB_ID"); 

Edit:

Вы должны определить рк ClassB в т он также конфигурируется. В том, как вы реализовали, вы можете добавить еще одну производную конфигурацию для ClassB.

+0

Я пробовал, я также пытался удалить таблицы и воссоздать все с нуля. Я попытался удалить карту и позволить EF выполнять эту работу для меня. Я получаю всегда ту же ошибку. При необходимости я могу опубликовать больше кода. – Davide

+0

Я обновил сообщение с дополнительной информацией. Если вы можете мне помочь, я буду очень признателен, потому что я схожу с ума от этого: S – Davide

Смежные вопросы