我正在用键盘敲击键盘,基本上我想要做的就是相当简单。
我使用EF Power Tools逆向设计了一个现有的数据库,我这样做主要是因为所讨论的数据库已经很老了,并且缺少很多外键,甚至是主键。目标是能够向生成的模型添加导航属性,主要是为了在查询模型时拥有更清晰的代码。
现在我有2个班User
和CostCentre
,使用正确的主键映射到各自的表Users
和CostCentres
,Users
的PK为{ {1}}在Username
中命名为Userid
,这两者之间的理论关系为1到M(一个用户可以有多个CostCentre)。
我向CostCentres
添加了一个导航属性,如此
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);
保持为空。
我很确定我错过了一些非常明显的东西,但是对于Barnaby Jones的爱,我无法掌握什么。 任何帮助将不胜感激。