Comments (5)
This works:
.WHERE("i.UUID IN ({0})", (Array)uuids.ToArray());
from dbextensions.
C# will cast an array of any reference type to object[]
, but it won't cast an array of a value type.
So,
WHERE("i.UUID IN ({0})", new string[] {"test1","test2","test3"});
is equivalent to
WHERE("i.UUID IN ({0})", "test1","test2","test3");
To work around it you have to explicitly create the params array:
WHERE("i.UUID IN ({0})", new object[] { new string[] { "test1","test2","test3" } });
or cast the array to object
:
WHERE("i.UUID IN ({0})", (object)new string[] { "test1","test2","test3" });
This is not an issue with value type arrays, e.g.
WHERE("i.UUID IN ({0})", new int[]{ 1, 2, 3 });
is equivalent to
WHERE("i.UUID IN ({0})", new object[] { new int[]{ 1, 2, 3 } });
from dbextensions.
I see it confuses the array values for the function parameters.
It is a bit easy to make a mistake here, i spent hours on this mistake.
At first i tried to give it a list but it says it doesn't support the type.
I think this would be more clear if it accepted list also.
Then you could do a simple .ToList() and you would know that those will be values and they cant be interpreted as function parameters.
It would also be easier to explain this situation in docs IMO.
I will use it like this from now on:
(Array)uuids.ToArray());
I just have to be vigilant not to forget to typecast it.
from dbextensions.
Yes, this needs to be explained in the documentation. I'll leave this issue open as a reminder.
from dbextensions.
Updated documentation.
from dbextensions.
Related Issues (20)
- Need to "extend" clause HOT 1
- dotnet core version HOT 23
- Support explicit DbParameter on CreateCommand HOT 3
- Add support for CROSS_JOIN to SqlBuilder HOT 2
- Async support HOT 7
- CommandTimeout setting HOT 4
- Accessing CommandTimeout property HOT 1
- Support updates when using updatable keys HOT 1
- LIMIT and OFFSET incorrectly adding {0} instead of actual value. HOT 1
- Please create a DotNet Standard Version. HOT 1
- Compile with C# 8 to leverage nullable reference types annotations HOT 1
- Association with multiple keys HOT 4
- Error using SqlSet using depth path HOT 2
- Add support for .NetStandard 2.1 HOT 1
- Hitting SQL 2100 parameter limit HOT 3
- Use same parameter when value is the same HOT 6
- ColumnAttribute Name does not work HOT 8
- Expose table name metadata
- .NET 6 support? HOT 2
- [self-resolved] ._ForEach<T>() behaves differently depending on .NET environment ?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dbextensions.