两个模型之间的多个关系

时间:2012-07-28 22:37:54

标签: c# entity-framework

我首先使用代码而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; }
 }

一种关系是一对一或多种关系,因为catle只能在农场中,而农场可以包含许多catles。另一个关系是很多甚至很多,可以在农场之间转移catle,我会生成第三个表来使用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) 

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

1 个答案:

答案 0 :(得分:0)

处理多个连接时,您可能需要具体了解关系。

尝试将“外键”属性添加到“场”导航属性中。

[ForeignKey("FarmID")]
public virtual Farm Farm { get; set; }