我在Visual Studio中使用实体框架wizzard创建了一个db-model。有两个表(job,stocktype)与表stocktype2job相互关联。
Job <------- no direct relation / navigation property --------> StockType
| |
| |
---------------------> StockType2Job ----------------------------->
使用Job Object,我可以做这样的事情......
EntitiesObject db = new EntitiesObject();
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40);
List<StockType> stockTypes = new List<StockType>;
foreach (StockType2Job st2j in job.StockType2Jobs)
{
stockTypes.add(st2j.StockType);
}
这应该工作得很好。但有没有办法在作业实体中创建一个导航属性,所以我可以写这样的东西?
EntitiesObject db = new EntitiesObject();
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40);
List<StockType> stockTypes = job.StockTypes; // <<-----
感谢您的帮助 APO
答案 0 :(得分:2)
很明显(来自自引用)StockType2Jobs
不仅包含StockType和Job的外键,因此您无法使用导航属性job.StockTypes
映射多对多关系。因此,您无法执行任何其他操作,然后通过StockType
收集job.StockType2Jobs
。但这不是什么大问题:
List<StockType> stockTypes = job.StockType2Jobs.Select(x => x.StockType);
你可能想把它包装在一个未映射的属性job.StockTypes
中,但通常这不是一个好主意。
答案 1 :(得分:1)