EF Core ExecuteSqlCommand和參數

asp.net-core c# entity-framework entity-framework-core

我必須在ef核心1.1.2上執行sql命令:

 var projectParam = new SqlParameter("@projectid", SqlDbType.UniqueIdentifier).Value = inventory.ProjectId;
 var locationParam = new SqlParameter("@locationid", SqlDbType.UniqueIdentifier).Value = location.Id;
 var scanOrderParam = new SqlParameter("@scanorder", SqlDbType.Int).Value = scanOrder;
 _ctx.Database.ExecuteSqlCommand("update Inventories set ScanOrder=ScanOrder+1 where ProjectId = '@projectid' AND LocationId = '@locationid' AND ScanOrder>'@scanorder';",
                  parameters: new[] {
                                     projectParam, locationParam, scanOrderParam
                  });

它拋出了異常:

  • 發生了未處理的異常:從字符串轉換為uniqueidentifier時轉換失敗。
  • 如果我在命令中寫入ScanOrder> @scanorder,則表示必須聲明scanorder參數。哪個是int。
  • 如果我不在projectid和locationid使用撇號,則拋出必須聲明的異常參數。

使用ef核心參數的正確方法是什麼?

編輯(解決方案):問題是我聲明參數並給它們值的方式。如果我使用這個表格它的工作原理:

var projectParam = new SqlParameter("@projectid", SqlDbType.UniqueIdentifier);
projectParam.Value = inventory.ProjectId;
var locationParam = new SqlParameter("@locationid", SqlDbType.UniqueIdentifier);
locationParam.Value = location.Id;
var scanOrderParam = new SqlParameter("@scanorder", SqlDbType.Int);
scanOrderParam.Value = scanOrder;

一般承認的答案

 var queryItem = new SqlParameter("@table", SqlDbType.Char) {Value = yourValue};


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow