C# 设置外键

本文关键字:设置 | 更新日期: 2023-09-27 17:56:41

>我有一个表单,可以将主人和宠物的数据输入数据库。宠物有一个主人ID的外键,主人和宠物的数据填写在同一表格中,那么如果ownerID还没有在数据库中设置,如何在宠物对象中设置主人id呢?或者我必须先在数据库中设置所有者?

Owner属性

private int32 idOwner;
private String name;

Pet属性;

private int32 Pet;
private int32 idOwner;    // foreign key
private String name;

形式

Owner owner = new Owner();
owner.Name = this.ownerNameTxt.Text.Trim();
OwnerService.addOwner(owner); // add owner to database
Pet pet = new Pet();
pet.name = this.petNameTxt.Text.Trim();
pet.idOwner = ????????

C# 设置外键

因此,

您有一个在插入时生成的标识列idOwner,并且您希望在Pet对象中设置该 id。然后,您需要修改OwnerService.addOwner方法,以便从数据库中选择生成的 ID 并更新所有者对象。

private void addOwner(owner)
{
    // your current logic here but modify to
    // add  ;SELECT  SCOPE_IDENTITY(); at the end of your insert query.
    // and store it in a local int. eg int ownerID = (int)cmd.ExecuteScalar();
    owner.idOwner = ownerID;
}

然后您的表单代码:

Owner owner = new Owner();
owner.Name = this.ownerNameTxt.Text.Trim();
OwnerService.addOwner(owner); // add owner to database
Pet pet = new Pet();
pet.name = this.petNameTxt.Text.Trim();
pet.idOwner = owner.idOwner;

Docs for SCOPE_IDENTITY (Transact-SQL):

返回插入到标识列中的最后一个标识值 相同的范围。作用域是一个模块:存储过程、触发器、 函数或批处理。因此,如果 它们位于同一存储过程、函数或批处理中。