【问题标题】:EF 4.1 Code First: Each property name in a type must be unique error on Lookup Table associationEF 4.1 Code First:类型中的每个属性名称必须是查找表关联上的唯一错误
【发布时间】:2011-09-25 10:52:16
【问题描述】:

这是我第一次尝试创建自己的 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 字段的引用的错误。

【问题讨论】:

    标签: c# entity-framework entity-framework-4 entity-relationship


    【解决方案1】:

    您正在寻找:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多