Dynamic Object Definition
Dynamic
object definition is very straightforward and performed in an array-like
manner.
Dynamic dyn = new Dynamic();
dyn["ID"]
= Guid.NewGuid();
dyn["Number"]
= i;
dyn["Name"]
= "Name" + i;
dyn["Date"]
= DateTime.Now.AddMinutes(i);
dyn["isTrue"]
= true;
dyn["Edition"]
= i + 0.5;
dyn["Value"]
= (decimal)6780059005987543545;
dyn["xxx"]
= 'f';
dyn["Name
Surname"] = "Name" +
i;
db.Store(dyn);
Where word in a bracket is a
field name. Database will auto-determine parameter type and will respect that
type.
To remove the field - assign null to that field.
Fields can be added and removed
in runtime. Dynamic objects can be converted in runtime to native objects and
back.
SQL Query
Dynamic objects can be queried
using similar to native object queries
SELECT Dynamic WHERE Number
> 3 AND Name = 'Name5'
SELECT Dynamic ORDER BY Name
IN('Name5', 'Name7')
SELECT Dynamic WHERE Number +
Number = 14 OR Number + 1 = 8
LINQ Query
In LINQ dynamic object fields can
be access in an array-like manner. Most of the time type of the field will be
implicitly determined but some time it might be necessary via explicit cast
enforce type.
from Dynamic d
in db where d["Number"] > 3 && d["Name"] == "Name5"
select d
from Dynamic d
in db where (d["Number"] >= 3 && d["Number"] <= 7) || d["isTrue"] == false
select d
from Dynamic d
in db where (int)d["Number"]
+ (string)d["Name"]
+ 3 + "ZZZ" == "5Name53ZZZ" || d["Number"] == 3 select
d