Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在lightswitch中以零或一对一关系创建主键_Entity Framework_Entity Relationship_Visual Studio Lightswitch - Fatal编程技术网

Entity framework 在lightswitch中以零或一对一关系创建主键

Entity framework 在lightswitch中以零或一对一关系创建主键,entity-framework,entity-relationship,visual-studio-lightswitch,Entity Framework,Entity Relationship,Visual Studio Lightswitch,我有两个表,第一个表有一个主键,但不是自动递增的,另一个表有一个主键,也是自动递增的。我需要将第二个主键的值设置为第一个主键的值 TABLE1 primary key TABLE2 primary key zero or one ------------ one 当我将新记录插入表1时,表2主键没有插入到表1主键,我就有了这种关系。值为0。我如何解决这个问题 提前感谢。它不会自动设置,您必须向表2中添加一条记录,并在表1的插入方法中自行设置对该记录的引用 定义了它们之间的关

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

TABLE1 primary key         TABLE2 primary key
zero or one   ------------ one
当我将新记录插入表1时,表2主键没有插入到表1主键,我就有了这种关系。值为0。我如何解决这个问题


提前感谢。

它不会自动设置,您必须向表2中添加一条记录,并在表1的插入方法中自行设置对该记录的引用

定义了它们之间的关系并不意味着将自动添加Table2记录,也不意味着将自动添加Table1 FK

还是我误解了你的要求

编辑:

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

我将使用表1和表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;
}

这取决于关联映射。你能展示一下细节吗?顺便说一句,复合键是由同一个表中的多个列组成的键:)谢谢回复,但我不能设置主键,它是只读的,并且表位于不同的OData中。你有任何示例代码吗?我没有说设置键值,我知道它们是只读的(来自实体框架,LightSwitch使用它),我说的是设置对它的引用。您没有提供导航属性的名称,因此我无法更具体地说明。如果你在LightSwitch内部编码,OData没有任何区别。如果你给我看代码(完整的方法,而不仅仅是它的一部分,它需要在上下文中),也许我可以指出你错在哪里。“它不会自动设置,你必须在表2中添加一条记录,并在表1的插入方法中自己设置对它的引用。”我设置了引用,但它不起作用。我该怎么办?感谢您的帮助
partial void PERSONELs\u Inserting(PERSONEL entity){entity.refPersonelID=entity.Personelyetki.Id;}
entity是PERSONEL表,Personelyetki是Personeller表。refPersonelID是PERSONEL引用键。不可能像这样直接设置实体的ID属性。您需要使用可用的id值检索Personelyetki实体,然后将entity.Personelyetki设置为检索到的实体。我将在原始答案中添加一个示例。
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;
}