在lightswitch中创建零或一对一关系的主键

时间:2013-02-14 09:12:21

标签: entity-framework entity-relationship visual-studio-lightswitch

我有两个表,第一个有主键,但不是自动增量,另一个有主键,也有自动增量。我需要将第二个主键的值设置为第一个。

TABLE1 primary key         TABLE2 primary key
zero or one   ------------ one

当我向TABLE1插入新记录时,我有这种关系,TABLE2主键未插入TABLE1主键。值为0.我该如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

不会自动设置,您必须将记录添加到 Table2 ,&在 Table1 插入方法中自己设置对它的引用。

仅仅因为你们之间定义的关系并不意味着会自动添加 Table2 记录,也不意味着 Table1 FK。

或者我误解了你的要求?

编辑:

partial void PERSONELs_Inserting(PERSONEL entity) 
{ 
    entity.refPersonelID = entity.Personelyetki.Id; 
}

如果 refPersonelID 只是一个整数属性,那么上面的代码应该可以正常工作。如果它不仅仅是一个普通的整数属性,那么我仍然不明白问题是什么。你得到什么错误?

我将举例说明如何设置导航属性,使用 Table1 & 表2 。我假设它们之间存在1-Many关系,因此 Table1 具有名为 Table2s 的导航集合属性,& Table2 有一个名为 Table1 的导航属性。我并不完全了解您实际尝试做的事情,但下面的示例代码说明了设置导航属性的正确方式。

要设置Table2的Table1属性,您可以这样做:

private void UpdateTable1
{
    //retrieve the Table1 entity that corresponds to the required integer ID value (someIdValue)
    var table = this.Details.DataWorkspace.ApplicationData.Table1Set.SingleOrDefault(someIdValue);

    //assign the retrieved entity to the navigation property
    this.Table1 = table;

    //you CAN'T do this
    this.Tbale1.ID = someIdValue;
}