5

To jest moja pierwsza próba utworzenia własnego modelu EF, a teraz utknąłem w próbie utworzenia powiązania tabeli odnośników za pomocą kodu po pierwsze, dzięki czemu można uzyskać dostęp:Kod EF 4.1 Pierwszy: Każda nazwa właściwości w typie musi być unikatowym błędem w skojarzeniu tabeli odnośników

myProduct.Category.AltCategoryID 

mam modeli i konfiguracji mapowania jak rozumiem za prawidłowe, ale nadal się błąd 0019: Każda nazwa właściwości w rodzaju muszą być unikalne. Nazwa obiektu „IDkategorii” została już zdefiniowana

następujące modele są reprezentowane w moim kodu:

[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; } 
} 

mam określonego skojarzeń z:

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

Próbowałem kilka inne rzeczy, w tym dodanie adnotacji [ForeignKey], ale powoduje to błąd zawierający odniesienie do pola ProductID.

Odpowiedz

8

Szukasz:

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); 
Powiązane problemy