This website is about XOODBS assembly to program software for Microsoft and Mono .NET platform.
ObjectContainer is a generic class to implement the storage of serializable objects in a file system, an archive, a database or anything else.
[Serializable]
public class TestItem : IObjectWithID
{
public Guid ID { get; private set; }
public string Name { get; set; }
public TestItem()
{
ID = Guid.NewGuid();
Name = "Item Name";
}
}
SQLiteContainer container = new SQLiteContainer("db.bin");
container.Active = true;
Guid id = container.Add(new TestItem(), "GlobalNamespace");
TestItem item = (TestItem)container.Retrieve(id);
item.Name = "New name";
container.Update(item);
container.Delete(item);
container.Active = false;
Here are drafts of a source code and a class diagram of what it should be about the usage of the database.

//-----------------------------------------------------------------------------
[Serializable]
public class AlarmPeriodicity
{
public int PeriodType { get; set; };
public DateTime Value { get; set; };
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmPeriodicityProperty : EntityProperty < AlarmPeriodicity >
{
public AlarmPeriodicityProperty(EntityItem owneritem)
: base(owneritem) { }
public AlarmPeriodicityProperty(EntityItem owneritem, AlarmPeriodicity value)
: base(owneritem, value) { }
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmItem : EntityItem
{
public StringEntityProperty Title { get { return _Title; } }
private StringEntityProperty _Title;
public AlarmPeriodicityProperty Periodicity { get { return _Periodicity; } }
private AlarmPeriodicityProperty _Periodicity;
public AlarmItem(IEntityCollection ownerset, UserItem creator)
: base(ownerset, creator)
{
}
}
//-----------------------------------------------------------------------------
[Serializable]
public class AlarmsCollection : EntityCollection < AlarmItem >
{
public AlarmsCollection(SessionManager manager)
: base(manager, "Alarms")
{
}
}
//-----------------------------------------------------------------------------
// Methods raise an exception if user have no access right to the element.
//-----------------------------------------------------------------------------
[Serializable]
public class DatabaseConnexion : SessionManager
{
public AlarmsCollection Alarms { get { return _Alarms; } }
static private AlarmsCollection _Alarms;
public DatabaseConnexion(string usercode, string userpwd)
: base(usercode, userpwd) { }
static public void RunSample()
{
DatabaseConnexion session = new DatabaseConnexion("user", "password");
AlarmItem item1 = (AlarmItem)session.Alarms.CreateEntity();
item1.Lock();
item1.Edit();
item1.Title.Value = "Title";
item1.Periodicity.Value.PeriodType = 1;
item1.Apply();
item1.Unlock();
AlarmItem item2 = (AlarmItem)session.Alarms.CreateEntity();
item2.LockEdit();
item2.Title.Value = "Title";
item2.Periodicity.Value.PeriodType = 2;
item2.ApplyUnlock();
var list = from AlarmItem item
in session.Alarms
where ( item.Title.Value == "Title" )
select item;
session.Alarms.Lock();
session.Alarms.Edit();
foreach ( var item in list )
{
Console.WriteLine(item.Title.Value);
item.Title.Value = "Another Title";
}
session.Alarms.Cancel();
session.Alarms.Remove(item2);
session.Alarms.Unlock();
}
}
Projects have been started on May 2007 and the progress of the developments are:
- 80% for the Code Model: 1st release is scheduled for late 2009.
- 20% for the Entity Model: 1st release is scheduled for 2010 to 2012.