Код EF 4.1 первый: каждое имя свойства в типе должно быть уникальной ошибкой при сопоставлении таблицы поиска - PullRequest
5 голосов
/ 29 июня 2011

Это моя первая попытка создать собственную модель EF, и я застрял, пытаясь создать ассоциацию таблицы поиска с использованием Code First, чтобы я мог получить доступ к:

myProduct.Category.AltCategoryID

У меня есть правильные настройки моделей и сопоставлений, но я продолжаю получать ошибка 0019: каждое имя свойства в типе должно быть уникальным. Имя свойства 'CategoryID' уже определено

В моем коде представлены следующие модели:

[Table("Product", Schema="mySchema")]
public class Product {
    [Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
    public int ProductID { get; set; }
    public int CategoryID { get; set; }
    public virtual Category Category { get; set; }
}

[Table("Category", Schema="mySchema")]
public class Category {
    [Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
    public int CategoryID { get; set; }
    public string Name { get; set; }
    public int AltCategoryID { get; set; }
}

Я указал ассоциации с:

modelBuilder.Entity<Product>()
                    .HasOptional(p => p.Category)
                    .WithRequired()
                    .Map(m => m.MapKey("CategoryID"));

Я пробовал несколько других вещей, включая добавление аннотации [ForeignKey], но это приводит к ошибке, содержащей ссылку на поле ProductID.

1 Ответ

8 голосов
/ 30 июня 2011

Вы ищете:

modelBuilder.Entity<Product>()
            // Product must have category (CategoryId is not nullable)
            .HasRequired(p => p.Category)     
            // Category can have many products  
            .WithMany()                       
            // Product exposes FK to category  
            .HasForeignKey(p => p.CategoryID);
...