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