2

我首先通过本教程基本掌握了最新版本的 EF 代码 - http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs但我有点困惑关于一个方面,想知道是否有人可以阐明它?解释一下 - 有一个名为“Site”的类,我希望有一个名为“HomePageId”的字段,然后应该映射到具有该 ID 的“SitePage”对象。看起来很简单?但是当 EF 创建 Db 和关系时,它似乎并不理解这一点。我确定这是我做错了 - 这是代码:

public class Site
{
    public int SiteId { get; set; }
    public string SiteName { get; set; }
    public string SiteUrlPortion { get; set; }

    // Relationship - SitePages
    public virtual ICollection<SitePage> SitePages { get; set; }

    // Relationship - HomePage
    public int HomePageId { get; set; }
    public virtual SitePage HomePage { get; set; }
}

public class SitePage
{
    public int SitePageId { get; set; }
    public string SitePageTitle { get; set; }
    public string SitePageUrlPortion { get; set; }

    // Relationship - Site
    public int SiteId { get; set; }
    public virtual Site Site { get; set; }       
}

正如您所期望的那样,“SitePage”类将关系生成回“Site”。但是我在两个表中的列方面不仅没有意义,而且代码方面的关系也没有按预期工作。(例如,当我给“Site”一个“HomePageId”时,该站点的“HomePage”为空。

显然,在文档方面几乎没有,因为这仍在开发中,但只是想知道是否有人有任何想法?我需要开始用属性装饰属性吗?还是我要求它理解一些它永远不会理解的东西?!

提前感谢大家。无论如何,我会坚持下去,并将我发现的任何东西发回。抢

4

2 回答 2

1

尝试使用这样的 ForeignKey 属性标记您的 HomePage 属性

[Foreignkey("HomePageId")]
public virtual SitePage HomePage { get; set; }

你也可以使用流利的配置,但不要记住那个副手

于 2011-01-27T17:08:59.387 回答
0

It is probably a limitation in EF. That EF can only handle one relationship between 2 tables.

You have 2 relationships between the tables, to the list of site pages and to the home page.

try removing this line:

public virtual SitePage HomePage { get; set; } 

You still have the homepageid, so in a way this information was redundant.

于 2011-01-26T11:50:17.757 回答