0

我有两个表,第一个表有一个主键,但它不是自动递增,另一个具有主键并且也是自动递增的。我需要将第二个主键的值设置为第一个。在灯开关中创建零关系或一对一关系的主键

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

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

在此先感谢。

+0

这依赖于关联映射。你能展示细节吗? BTW组合键是由同一个表中的多个列组成的键:) – 2013-02-14 13:18:42

回答

0

它不会被自动设置,你就必须将记录添加到表2,&设置基准以它自己,在表1插入方法。

仅仅因为你要么他们之间的定义并不意味着表2记录会自动被添加的关系,也不是表1 FK。

还是我误解了你在问什么?

编辑:

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

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

我给你如何设置一个导航属性的例子,使用表1 & 表2。我假设它们之间的一对多关系,所以表1有一个名为Table2s,& 表2有一个名为表1导航属性导航集合属性。我并不完全了解您实际要做什么,但下面的示例代码说明了设置导航属性的方式正确

要设置表2的表1的财产,你可以这样做:

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; 
} 
+0

感谢您的回复,但我无法设置主键,它只能读取,表格位于不同的Odatas中。你有任何示例代码? – 2013-02-14 14:47:06

+0

我没有说设置KEY值,我知道它们是只读的(来自LightSwitch使用的实体框架),我说设置参考。你没有给出导航属性的名称,所以我不能更具体。如果你正在编写INSIDE LightSwitch,OData没有任何区别。如果你向我展示代码(完整的方法,不只是它的一部分,它需要在上下文中),也许我可以指出你错误的地方。 – 2013-02-15 00:26:08

+0

_“它不会被自动设置,你必须添加一个记录到Table2中,并在Table1的Inserting方法中自己设置引用。”_我设置了引用,但它不起作用。我能怎么做?谢谢你的帮助 – 2013-02-19 10:15:15