public SQLiteStorageContext(Func <DataRowDalcMapper, IObjectContainerStorage, IDataSchemaStorage> getSchemaStorage) { dbFileName = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + ".db"); var connStr = String.Format("Data Source={0};FailIfMissing=false;Pooling=False;", dbFileName); var sqliteDalcFactory = new SQLiteDalcFactory(); Connection = sqliteDalcFactory.CreateConnection(); Connection.ConnectionString = connStr; InternalDalc = new DbDalc(sqliteDalcFactory, Connection, new [] { new DbDalcView("objects_view", @" SELECT @SqlFields FROM objects @Joins @SqlWhere[where {0}] @SqlOrderBy[order by {0}] " ) { FieldMapping = new Dictionary <string, string>() { { "id", "objects.id" }, { "compact_class_id", "objects.compact_class_id" } } }, new DbDalcView("object_relations_view", @" SELECT @SqlFields FROM object_relations r LEFT JOIN objects subj ON (subj.id=subject_id) LEFT JOIN objects obj ON (obj.id=object_id) @SqlWhere[where {0}] @SqlOrderBy[order by {0}] " , "subject_id,predicate_class_compact_id,object_id,subj.compact_class_id as subject_compact_class_id,obj.compact_class_id as object_compact_class_id", "count(r.id)") }); var dbEventsBroker = new DataEventBroker(InternalDalc); var sqlTraceLogger = new NI.Data.Triggers.SqlCommandTraceTrigger(dbEventsBroker); InitDbSchema(); StorageDbMgr = new DataRowDalcMapper(InternalDalc, new StorageDataSetPrv(CreateStorageSchemaDS()).GetDataSet); var objStorage = new ObjectContainerSqlDalcStorage(StorageDbMgr, InternalDalc, () => { return(DataSchemaStorage.GetSchema()); }); objStorage.DeriveTypeMapping = new Dictionary <string, string>() { { "getDateYear", "CAST(strftime('%Y', {0}) as integer)" } }; DataSchemaStorage = getSchemaStorage(StorageDbMgr, objStorage); objStorage.ObjectViewName = "objects_view"; objStorage.ObjectRelationViewName = "object_relations_view"; ObjectContainerStorage = objStorage; StorageDalc = new StorageDalc(InternalDalc, ObjectContainerStorage, DataSchemaStorage.GetSchema); }
public void SetUp() { dbFileName = Path.GetTempFileName() + ".db"; var connStr = String.Format("Data Source={0};FailIfMissing=false;Pooling=False;", dbFileName); Dalc = new DbDalc(new SQLiteDalcFactory(), connStr); var usersViewSql = @" select @SqlFields from users u left join roles r on (u.role=r.id) @SqlWhere[where {0}] @SqlOrderBy[order by {0};order by u.id desc] " .Trim(); Dalc.CommandGenerator = new DbCommandGenerator(Dalc.DbFactory) { Views = new[] { new DbDalcView("users_view", usersViewSql, "u.*,r.role as role_name", "count(u.id)") { FieldMapping = new Dictionary <string, string>() { { "role_name", "r.role" } } }, new DbDalcView("users2_view", usersViewSql, "u.*,r.role as role_name@customParam[, {0}]", "count(u.id)") { FieldMapping = new Dictionary <string, string>() { { "role_name", "r.role" } } } } }; // create tables if not exist Dalc.ExecuteNonQuery(@" CREATE TABLE [users] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [name] TEXT, [role] INTEGER ) " ); Dalc.ExecuteNonQuery(@" CREATE TABLE [roles] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [role] TEXT ) " ); Dalc.Insert("users", new Hashtable { { "name", "Mike" }, { "role", 1 } }); Dalc.Insert("users", new Hashtable { { "name", "Joe" }, { "role", 1 } }); Dalc.Insert("users", new Hashtable { { "name", "Stas" }, { "role", 2 } }); Dalc.Insert("users", new Hashtable { { "name", "WUserToDelete" }, { "role", 3 } }); Dalc.Insert("roles", new Hashtable { { "role", "admin" } }); Dalc.Insert("roles", new Hashtable { { "role", "user" } }); Dalc.Insert("roles", new Hashtable { { "role", "toDelete" } }); }
protected BaseRepository() { connectionString = ConfigurationManager.ConnectionStrings[0].ConnectionString; db = new DbDalc(new CustomSqlServerProviderFactory(), connectionString); db.Connection.Open(); }