【问题标题】:what does one to one table mapping mean?一对一的表映射是什么意思?
【发布时间】:2009-07-16 17:25:16
【问题描述】:

我今天早上在听 dot net Rocks 时听到了这句话。显然 linq to sql 只支持一对一的表映射。

【问题讨论】:

  • 致受访者:那么您是说如果您有两个相关的表,并且它们的关系是一对一(相对于一对多),那么您有一个“一对一的表映射”?
  • @MedicineMan,我认为您和这里的受访者稍微误解了这句话。请注意我的回答作为一种可能的选择。您能否还提供哪一集以及引用发生的时间(如果可能)?谢谢

标签: sql sql-server database database-design


【解决方案1】:

一对一映射意味着一个父行只能有一个子行。考虑设计时有不同类型的映射

一对多:汽车有很多部件
多对一:许多汽车使用相同的部件
多对多:许多汽车中使用了许多零件
一对一:一个零件在一辆汽车中只使用一次

【讨论】:

    【解决方案2】:

    一对一、一对多、多对多是定义多重关系的术语。

    http://www.databaseprimer.com/relationship.html

    【讨论】:

      【解决方案3】:

      我知道 Linq-to-Sql 不仅允许一对一映射,还允许一对多映射,正如前面提到的那样。

      我要么没有听过(或最近听过)你提到的 DNR 插曲(这句话提到了哪一集和什么时间)。但我发现它们不太可能意味着 Linq-to-Sql 无法处理一对多关系。

      我认为他们的意思是 Linq-to-Sql 只能对“实体”进行一对一的匹配。因此,您的数据库可以将 CUSTOMER 和 INVOICE 作为一对多关系,在 Linq-to-Sql 中,您将有一个名为 Customer 的对象和一个名为 Invoice 的对象,它们之间的关系是一对多,但 .NET 和数据库表是 1 对 1 的。要收缩 Linq-to-Entities 可以与其对象有一对多的关系,例如,您可以有一个名为 INVOICE 的数据库表,但您可以有多个 Linq 对象,例如 Invoice 和 PaidInvoice 以及这些都将引用同一个数据库表,但 PaidInvoice 会将 Paid_flg 列设置为 1 而不是 0。

      【讨论】:

        【解决方案4】:

        这意味着对于一个表中的每个条目,在另一个表中都有一个相关条目。但是,Linq to SQL 支持一对一以外的各种数据关系。以Join examples here 为例。

        【讨论】:

          【解决方案5】:

          一对一关系意味着对于一张表中的每条记录,相关表中只有一条记录...

          但 LinqToSql 支持 一对一一对多 关系的映射... 多对多 可以实现,但需要一些编码...

          【讨论】:

          • 相关表中只能有1条记录是否更正确?
          猜你喜欢
          • 2014-04-04
          • 2018-06-29
          • 1970-01-01
          • 1970-01-01
          • 2010-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多