2012-07-28 103 views
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; } 
} 

一个关系是一对一或多个引起catle只能是农场和农场可以包含很多catles。另一种关系是多对多的,一个catle可以在农场之间转移,我会生成第三个表来存储使用Fluent API的转移。我也想有个约会属性插入到新表和鸵鸟政策知道该怎么做it.Here是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) 

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

+0

“Farm”已填充或为空吗? FarmID是否正确填充?有关与问题相关的新日期属性的信息如何? – 2012-07-29 16:22:41

+0

是的,Farm表正确填充并且catle表也是。 FarmID填充在两个表中。日期属性存储从实际农场到新农场的转移日期。希望我有帮助。 – 2012-07-30 13:31:40

+0

对不起,我在问.NET代码,而不是数据库。 – 2012-07-30 13:35:03

回答

0

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

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

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

对不起,但它没有工作。向我显示以下错误:“参照关系将导致不允许的循环引用” – 2012-07-31 17:02:46

+0

您应该能够通过允许FarmId(public int?FarmID {get; set;})的空值来停止循环或多个级联路径或者禁用与modelBuilder的关系级联。 – ckal 2012-07-31 17:59:03

+0

好吧,我将FarmID属性设置为空,它工作正常,THX很多。那么如何生成Date属性到代码中显示的新表“CatleTransfer”中?可以帮助我吗? – 2012-07-31 21:19:58

相关问题