Entity Framework получает ICollection<int> от картографа

Используя Entity Framework 4.1, пытаясь получить коллекцию целых,

в основном у меня есть сущность под названием Spec

public class Spec {
   public int Id{get;set;}
   public string Name {get;set;}
   public ICollection<int> TypeIds {get;set;} 
}

спецификация таблицы имеет идентификатор столбца, имя и т. д., и я пытаюсь сопоставить TypeIds с таблицей SpecTypes с помощью столбца specId TypeId, и я не могу выяснить сопоставления для него

Я связывал что-то вроде этого

modelBuilder.Entity<Spec>().HasMany(r => r.TypesIds)
       .WithMany()
       .Map(m => m.ToTable("SpecTypes")
          .MapLeftKey("SpecId")
          .MapRightKey("TypeId"));

2 ответа

Я не думаю, что вы можете иметь свойство навигации к коллекции примитивных значений. Я думаю, что вам просто нужно создать сущность, которая содержит свойство I d и иметь коллекцию из них. Таким образом, у вас будет более или менее что-то вроде этого:

public class Spec { 
   public int Id{get;set;} 
   public string Name {get;set;} 
   public ICollection<TypeEntity> TypeIds {get;set;}  
} 

public class TypeEntity { 
   public int Id {get;set;} 
} 

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

public class Spec {
   public int Id{get;set;}
   public string Name {get;set;}
   public SpecType SpecType {get;set;} 
}


public class SpecType {
   public int Id{get;set;}
   public ICollection<Spec> Specs {get;set;}
}
Другие вопросы по тегам