[英]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.