Example #1
0
        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);
        }
Example #2
0
        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" }
            });
        }
Example #3
0
 protected BaseRepository()
 {
     connectionString = ConfigurationManager.ConnectionStrings[0].ConnectionString;
     db = new DbDalc(new CustomSqlServerProviderFactory(), connectionString);
     db.Connection.Open();
 }