0

我用这个敲击键盘,基本上我想做的事情很简单。

我使用 EF Power Tools 对现有数据库进行了逆向工程,我这样做主要是因为所讨论的数据库非常旧并且缺少很多外键,甚至是主键。目标是能够向生成的模型添加导航属性,主要是为了在查询模型时拥有更简洁的代码。

现在我有 2 个类UserCostCentre,映射到它们各自的表UsersCostCentres使用适当的主键,PKUsersUsername命名为UseridCostCentres这两者之间的理论关系是 1 到 M(一个用户可以有多个 CostCentre)。我添加了一个导航属性User喜欢这样

public virtual ICollection<CostCentre> CostCentres { get; set; }

我用一个简单的初始化默认构造函数中的列表

    public User()
    {
        CostCentres = new List<CostCentre>();
    }

我像CostCentre这样添加了一个用户属性

    public virtual User User { get; set; }

在生成的CostCentreMap类中,我像这样映射了导航属性

        this.HasRequired(cc => cc.User)
            .WithMany(u => u.CostCentres)
            .HasForeignKey(cc => cc.Userid);

现在每当我查询db.Users我无法填充属性时,我知道导航属性的工作方式,因为当我这样做时

db.Users
.Include(u => u.CostCentres);

生成的查询在每个表中的正确列上正确连接,但是如果我这样做

User user = db.Users
.Include("CostCentres")
.SingleOrDefault(u => u.Username == userName);

该物业CostCentres保持空置。

我很确定我错过了一些非常明显的东西,但为了巴纳比琼斯的爱,我无法得到什么。任何帮助将不胜感激。

4

0 回答 0