我試圖將我的陣列傳遞給 SQL Server,但我只能得到一個 NULL 值,如果我試圖添加一個表行并傳遞它,我只會在資料庫中收到 1 行。
這是我將陣列傳遞給 SQL 時的控制臺日志
這是我將陣列發布到 SQL 的地方:
postButton(data) {
return this.http.post(environment.baseURL 'PropertyTransactionDetails/Add', data)
}
這是我的模型:
public class PropertyTransactionDetailsDTO
{
public int Id { get; set; }
public string PropertyNumber { get; set; }
public string PropertyDescription { get; set; }
public string DeliveryReceiptNumber { get; set; }
}
這是我的存盤庫:
public async Task<PropertyTransactionDetailsDTO> Insert(PropertyTransactionDetailsDTO item)
{
PROPERTYTRANSACTIONDETAILS data = MapToEntity(item);
_ctx.Entry(data).State = EntityState.Added;
await _ctx.SaveChangesAsync();
return item;
}
我的控制器:
[HttpPost("Add")]
public async Task<ActionResult<PropertyTransactionDetailsDTO>> Add([FromBody] PropertyTransactionDetailsDTO item)
{
if (item == null)
item = new PropertyTransactionDetailsDTO();
return Ok(await _PropertyTransactionDetailsRepository.Insert(item));
}
這就是我得到的
uj5u.com熱心網友回復:
從您共享的代碼的外觀來看,您正在向后端發送一個陣列,但是后端需要一個物件。
從前端解決這個問題的一種方法是(假設資料確實是一個陣列并且您訂閱了 pushButton 的結果):
function pushButton(data){
let tasks: Observable<any>[] = [];
data.ItemRec.forEach((item, index) => {
tasks.push(this.http.post(environment.baseURL 'PropertyTransactionDetails/Add', item))
});
return concat(...tasks)
}
如果您在 Angular 專案中定義了型別,那么您可以將任何型別更改為該型別。
希望這可以幫助。
最小的作業示例:https ://stackblitz.com/edit/typescript-dspi9k?file=index.ts
在討論之后,最小的一步是將 onSave() 函式更改為:
onSave(){
console.log("onSave():",this.receivedPropertyForm.value);
this.receivedPropertyForm.value.ItemRec.forEach(prop=>{
this.micro.pushButton(prop).subscribe({next:(res)=>{console.log("After storing record:",res) } })
});
}
在 value 屬性中,您有一個 ItemRec 陣列。使用 forEach() 您將處理該陣列中的每個屬性并將其發送到資料庫。請注意,這不是所需的最終狀態,但它會起作用。看看 RxJS:https ://rxjs.dev/guide/overview
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/486374.html
上一篇:C#Linq查找唯一項
