如何在1..1关系中插入数据C#

时间:2017-10-29 17:27:03

标签: c# entity-framework relationship sql-insert

所以,我有两个表:Employee和Address。每个员工都必须有一个地址。

EmployeeId是Employee表中的PK,它是Identity和auto increment AddressId是地址表中的PK,它是身份和自动增量

当我想要创建新记录时,我正在 A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column:

我浪费了一整天但仍然不知道如何解决它。另外,我是DataBase编程的初学者。我正在使用实体框架和C#:

我正在上传图片以获取更多信息:

enter image description here

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

这是因为表中放置了错误的外键。

Chrck在关系中特别是外键。删除架构。您需要更新EDMX文件(并且不足以刷新"模型中的表格,您需要删除并在模型中再次添加表格。)

答案 1 :(得分:0)

关系数据库中实际上不可能存在1..1关系。问题是没有插入不违反其他外键的实体的顺序。如果您先插入员工,则地址尚不存在,但您无法在没有员工的情况下插入地址。

因此,我对您确切问题的建议是将其更改为0-1..1关系。每个员工必须都有一个地址,但您 然后先插入地址,分配给员工,然后插入员工。然后保存在一个事务中。

个人建议:如果您的关系确实是1..1,则没有理由将其拆分为两个表。表和关系的重点是避免冗余。但是,必须拥有员工的地址表无论如何都不能用于其他任何事情,因此您也可以将地址列添加到员工表中。这不仅有效,而且速度更快。

数据库设计和类设计最佳实践并不完全相同。在C#中应该分成两个类的可能是单个表,反之亦然。

答案 2 :(得分:0)

我在地址表AddressId上更改了IsIdentity,但仍然是主键。这解决了我的问题。