没有主键为什么不能建立一对多关系?

时间:2019-06-10 23:09:25

标签: linq-to-sql

我已经弄乱了我的DBML类的“设计”视图几个小时了。我有一个类,称为A,它与B,C,D和E具有一对多的关系。在生成的代码中,我可以看到A类已生成

private EntitySet<BB> _bb;
private EntitySet<CC> _cc;
private EntitySet<EE> _ee;

但是它并没有为D生成一个密钥。除D外,所有其他班级都有一个;现在它正在生成EntitySet _dd。但是为什么呢?我不需要该表具有指定的主键。

1 个答案:

答案 0 :(得分:1)

由于.dbml文件,我假设您正在使用LINQ to SQL。 LINQ to SQL(某种程度上是Entity Framework)与不包含主键的表进行了斗争。具体来说,该表需要一个主键来实现INotifyPropertyChanged(用于跟踪特定身份更改的接口...如果没有主键,如何跟踪实体?)。为何需要这样做的一个很好的例子。

https://social.msdn.microsoft.com/Forums/en-US/f3b216d2-fa06-49a1-a901-11702e80b38c/linq-to-sql-table-doesnt-have-primary-key?forum=linqtosql

作为后续,表格没有主键是否有特定原因?它不代表您的数据模型中的实体吗?如果它是“查找”表,则可以将功能包装在存储过程中,然后通过LINQ to SQL调用存储过程。