[英]Dapper stored procedures with Postgresql without alphabetical parameters
我正在嘗試使用C#和Dapper調用用plpgsql編寫的Postgresql存儲過程,但是我發現Dapper將參數按字母順序排列,然后將它們插入存儲過程。 有沒有一種方法可以避免這種現象,並以正確的順序插入項目?
例如,以下調用將無法正確運行,因為它將字母順序化參數名稱。 我必須手動將它們按字母順序排列,才能進行通話。
int map_id = conn.Query<int>(
"insert_color",
new
{
zebra_name = new DbString { Value = slide_name },
door_name = new DbString { Value = fov_name },
foo_number = cycle_number,
variable_path = new DbString { Value = image_path },
random_path = new DbString { Value = meta_path },
x = x,
y = y,
z = z,
exposure = exposure,
type_name = new DbString { Value = image_type },
copy = copy
},
commandType: CommandType.StoredProcedure).First();
這是存儲過程聲明:
CREATE OR REPLACE FUNCTION insert_color(
zebra_name text, door_name text, foo_number integer,
variable_path text, random_path text,
x real, y real, z real, exposure real,
type_nametext, copy integer) RETURNS integer AS $$
...
$$ LANGUAGE plpgsql;
在內部,Dapper使用反射來獲取param對象的屬性。 具體來說, GetProperies(...)
問題是,不能保證這些順序是特定的...
GetProperties方法不按特定順序(例如字母順序或聲明順序)返回屬性。 您的代碼不得依賴於返回屬性的順序,因為該順序會有所不同。
為了使它們有用,他們選擇按字母順序對參數進行排序,但不幸的是,沒有辦法確保參數按照您在類中的順序出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.