使用linq2sql的关系/外键?

问题描述 投票:1回答:1

有人可以帮忙吗?

我在我的预订(prim键)和保险(用于键)表之间创建了一个关系,并导入到linq2sql并检查我自动创建的c#文件,确定我有预订.MyFieldNames等等PLUS reservation.Insurance是我的关系但是reservation.Insurance我看不到保险的字段名称 - 我错过了什么吗?

我是否必须拨打GetInsurances或其他什么?我没有看到任何东西..实际上保险属于Linq.entityset ???

此外,我希望创建我的预订表(这很好,很容易),然后从Ilist或其他东西自动“注入”保险(即1对多)。

这是不可能的,

任何帮助真的很感激

附:我确实通过T4工具箱创建了我自动创建的c#dto文件,但这不应该有任何区别。我只为每个实体都有一个单独的文件..

sql-server linq linq-to-sql foreign-keys entity-relationship
1个回答
4
投票

不是100%肯定你的意思“我什么也看不见”。

假设你有一张Reservations表和一张引用“预订”的Insurance表 - 这是什么关系? 1:1? 1:很多?哪个方向?你可以发布你的DBML设计师表面的截图吗? (将其上传到www.tinypic.com并在您的问题中将链接作为图像包含在内)?

“Reservations”类将包含“Insurance”(EntityRef<Insurance>)的一个实例或“Ins​​urance”对象的列表(EntitySet)(EntitySet<Insurance>) - 取决于关系的性质 - 您应该能够在代码中导航它们,例如

string foo =  myReservation.Insurance.CustomerName; // or whatever 

你不会在设计师的表面上看到那些 - 这只是你设计界面上另一个类的链接,对吗?

反过来也是如此 - 如果保险只与一个保留相关联,您应该能够(在代码中)做:

 string bar = myInsuranceObject.Reservation.MyFieldName1; // or whatever

所以我不太清楚你真正指的是哪种情况 - 你能详细说明你的问题并使其更清楚吗?

基于NerdDinner sample,我将尝试详细说明。查看DBML设计界面:

alt text

在这里,您没有看到任何用于在对象之间来回移动的属性。但是你确实看到“RSVP”类有一个“DinnerID”外键,它将它链接到“Dinner”类。所以这是一个1:n的关系:一个晚餐有n个RSVP,每个RSVP只有一个晚餐。

在您的代码中,您现在可以看到这些创建的属性 - 首先查看RSVP类:

alt text

你可以看到RSVP类有一个EntityRef<Dinner> - 一个参考(链接)到一个Dinner - 这个RSVP的晚餐。

另一方面,Dinner课程列出了所有计划参加晚宴的极客的RSVP!

alt text

因此,在Dinner课程中,您有一个EntitySet<RSVP> - 一个完整的与会者列表,您可以在使用Dinner课程时导航。

这会让事情变得更清楚吗?

© www.soinside.com 2019 - 2024. All rights reserved.