使用npgsql将任何类型的数组传递给postgres存储过程

时间:2018-04-14 14:41:16

标签: c# postgresql npgsql

有没有办法使用npgsql将任何类型的数组从c#代码传递到postgres存储过程作为参数。

  

在这种情况下,anyarray或anyelement是否可以使用。

2 个答案:

答案 0 :(得分:0)

“任何类型的数组”(anyarray)是PostgreSQL pseudo-type,它只是用来编写接受任何区域的函数。它不是实际存在的类型 - 您不能拥有anyarray列。

因此,为了回答您的问题,您可以使用Npgsql将int,text或任何其他数据类型的数组发送到接受anyarray的PostgreSQL函数。 Npgsql不了解anyarray并且不关心它,它只是一个PostgreSQL端的细节。

答案 1 :(得分:-1)

由于Npgsql中的强大数据类型,我无法看到任何良好的方法来实现这一目标,但是如果你想要一个最低限度攻击的hack(就动态SQL / SQL注入而言) ),你可以加入" anyarray"在C#中然后将其拆分为PostgreSQL。

const fakePerformSearch = jest.fn();
const component = Shallow(<Search performSearch={fakePerformSearch}/>);
expect(fakePerformSearch).toHaveBeenCalled();

当然,您需要选择一个最不可能出现在任何值中的分隔符,这些分隔符会发臭。