我有两张桌子,说:
老师 1--------* 学生
我只有一个名为“学生”的导航属性。
仅对于此示例,我想做的是创建两个名为“男孩”的导航属性和另一个名为“女孩”的导航属性,这将基于名为“IsMale”的布尔值。
我已经从数据库生成了实体模型,所以这不是代码优先的。
谁能告诉我该怎么做?我需要修改生成的源吗?如果是这样,如果发生更新会发生什么,我会丢失代码吗?
谢谢你的时间!
克雷格
这是我的解决方案:
添加导航属性,并在属性中选择教师和学生之间的关联。
在生成的代码中,找到导航属性“男孩”,在末尾添加一个 .where 来选择男孩,例如:
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("SchoolModel", "FK_Pupils_Teacher", "Pupil")]
public EntityCollection<Pupil> Boys
{
get
{
return (EntityCollection<PriceKey>)((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<PriceKey>("SchoolModel.FK_Pupils_Teacher", "Pupil").Where(p => p.IsMale == true);
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Pupil>("SchoolModel.FK_Pupils_Teacher", "Pupil", value);
}
}
}
这就是我的解决方案。所以现在我可以使用导航属性并将我想要的传回。
我也喜欢下面的答案!并认为这是一个更好的主意:)
干杯!