4

我首先使用代码,EF 4.1 是我的 MVC3 应用程序,并且有两个模型,
它们之间有两种关系。以下是引用这些模型的类:

    public class Cattle
    {
        public int CattleID { get; set; }
        public int FarmID { get; set; }
        public int SituationID { get; set; }
        public int DiscardID { get; set; }
        public int Stamp { get; set; }
        public string Sex { get; set; }
        public string Condition { get; set; }
        public virtual Farm Farm { get; set; }
        [InverseProperty("Cattles2")]
        public virtual ICollection<Farm> Farms { get; set; }
    }

 public class Farm
 {
    public int FarmID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Cattle> Cattles { get; set; }
    public virtual ICollection<Cattle> Cattles2 { get; set; }
 }

一种关系是一对一或多的,因为一头牛只能在农场中,而一个农场可以包含许多牛。另一个关系是多对多的,牛可以在农场之间转移,我会生成第三个表来使用 Fluent API 存储转移。我还想在新表中插入一个 Date 属性,但不知道该怎么做。这是 OnModelCreating 方法中 FarmContext 中的代码:

        modelBuilder.Entity<Catle>()
         .HasMany(c => c.Farms).WithMany(i => i.Catles)
         .Map(t => t.MapLeftKey("CatleID")
             .MapRightKey("FarmID")
             .ToTable("CatleTransfer"));

当我构建项目时,它似乎工作正常,生成的表 Catle 和 Farm 由 FarmInitializer 提供,但在 Catle 的索引页面中缺少一些指向这种关系的信息。它对我来说是空白的。这是获取信息的代码:

@Html.DisplayFor(modelItem => item.Farm.Name) 

我需要知道我做错了什么,或者是否有更合适的方法来解决该问题。

4

1 回答 1

0

在处理多个联接时,您可能需要具体说明关系。

尝试将外键属性添加到您的农场导航属性。

[ForeignKey("FarmID")]
public virtual Farm Farm { get; set; }
于 2012-07-31T14:25:34.993 回答