簡體   English   中英

C#設置外鍵

[英]C# setting foreign key

我有一種表單,可以將所有者和寵物的數據輸入數據庫。 寵物具有所有者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 = ????????

因此,您具有一個標識列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;

適用於SCOPE_IDENTITY的文檔(Transact-SQL)

返回插入到同一作用域的標識列中的最后一個標識值。 范圍是一個模塊:存儲過程,觸發器,函數或批處理。 因此,如果兩個語句位於相同的存儲過程,函數或批處理中,則它們屬於同一范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM