在数据库中,我们有3个表:
INSEE_REGION, INSEE_CODEPOSTAL, INSEE_VILLE
它们没有任何关系,所以我在DBML中有这样的关系:
注意:第三个关系是一个测试关系,目的是查看关系方向是否会对导航产生影响。
使用以下代码,我将尝试从另一个实体中选择一个实体:
var dbCP = new InseeCodePostalDataContext();
dbCP.INSEE_REGION.Select(x => x.INSEE_CODEPOSTAL); // error
dbCP.INSEE_REGION.Select(x => x.INSEE_VILLE); // error
dbCP.INSEE_CODEPOSTAL.Select(x => x.INSEE_REGION); // error
dbCP.INSEE_CODEPOSTAL.Select(x => x.INSEE_VILLE); // error
dbCP.INSEE_VILLE.Select(x => x.INSEE_CODEPOSTAL); // error
dbCP.INSEE_VILLE.Select(x => x.INSEE_REGION); // error
所有这些错误都是相同的,归结为:“实体A不知道B,缺少参考或其他内容。”
想法是建立简单的查询,例如:
SELECT XYZ
FROM INSEE_VILLE
INNER JOIN INSEE_CODEPOSTAL ON INSEE_VILLE.VILL_CodeINSEE = INSEE_CODEPOSTAL.Code_commune_INSEE
INNER JOIN INSEE_REGION ON INSEE_VILLE.VILL_Region = INSEE_REGION.REG_Compteur
WHERE
无需处理Join in query或lambda语法。但有关系可以建立链接。
4.6.2,控制台应用程序。新建项目,添加新元素,linQ2SQL模型,添加3个表,添加关系,复制过去的代码。