コード例 #1
0
        public void ComputeAsFieldWriter()
        {
            var model  = PersistentModel.Compile(SimpleModelWithComputeBy);
            var master = model["master"];
            var mwr    = new TableWriter(master)
            {
                Dialect     = DbDialect.SqlServer,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };

            var scr = mwr.ToString();

            Console.WriteLine(scr.Replace("\"", "\"\""));
            Assert.AreEqual(@"CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""master_seq""),
	""code"" nvarchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT '',
	""code2"" AS (code+'a')
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (-1, 'ERR');
EXECUTE sp_addextendedproperty N'MS_Description', 'Код', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code';
EXECUTE sp_addextendedproperty N'MS_Description', 'Код2', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code2';
".Trim(), scr.Trim());
        }
コード例 #2
0
        public void CanGenerateTableWithSystemName(string name)
        {
            var code  = @"
class " + name + @" prototype=dbtable
	ref "     + name + @"
";
            var model = PersistentModel.Compile(code);
            var t     = model[name];
            var mwr   = new TableWriter(t)
            {
                Dialect     = DbDialect.SqlServer,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };
            var scr = mwr.ToString();

            Console.WriteLine(scr);
            //Console.WriteLine("------------------  for copy-paste --------------------------");
            //Console.WriteLine(scr.Replace("\"","\"\"").Replace("\""+name+"\"","\"{0}\"").Replace("_"+name+"_","_{0}_"));
            Assert.AreEqual(string.Format(@"CREATE TABLE ""dbo"".""{0}"" (
	""id"" int NOT NULL CONSTRAINT dbo_{0}_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""{0}_seq""),
	""{0}"" int NOT NULL CONSTRAINT dbo_{0}_{0}_{0}_id_fk FOREIGN KEY REFERENCES ""dbo"".""{0}"" (""id"") DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""{0}"" where ""id""=0)  INSERT INTO ""dbo"".""{0}"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""{0}"" where ""id""=-1)  INSERT INTO ""dbo"".""{0}"" (""id"", ""{0}"") VALUES (-1, -1);
".Trim(), name), scr.Trim());
        }
コード例 #3
0
        public void CircularPreventFkes()
        {
            var model  = PersistentModel.Compile(CircularModel);
            var master = model["master"];
            var mwr    = new TableWriter(master)
            {
                Dialect     = DbDialect.SqlServer,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };
            var scr = mwr.ToString();

            Console.WriteLine(scr.Replace("\"", "\"\""));
            Assert.AreEqual(@"
CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""master_seq""),
	""code"" nvarchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT '',
	""slave"" int NOT NULL DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"", ""slave"") VALUES (-1, 'ERR', -1);
EXECUTE sp_addextendedproperty N'MS_Description', 'Код', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code';
EXECUTE sp_addextendedproperty N'MS_Description', 'Младший объект', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'slave';
".Trim(), scr.Trim());
            var slave = model["slave"];
            var swr   = new TableWriter(slave)
            {
                Dialect     = DbDialect.SqlServer,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };

            scr = swr.ToString();
            Console.WriteLine(scr.Replace("\"", "\"\""));
            Assert.AreEqual(@"
CREATE TABLE ""dbo"".""slave"" (
	""id"" int NOT NULL CONSTRAINT dbo_slave_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""slave_seq""),
	""version"" datetime NOT NULL DEFAULT ('19000101'),
	""master"" int NOT NULL DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=0)  INSERT INTO ""dbo"".""slave"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=-1)  INSERT INTO ""dbo"".""slave"" (""id"", ""master"") VALUES (-1, -1);
EXECUTE sp_addextendedproperty N'MS_Description', 'Версия', N'SCHEMA', N'dbo', N'TABLE', N'slave', N'COLUMN', 'version';
EXECUTE sp_addextendedproperty N'MS_Description', 'Главный объект', N'SCHEMA', N'dbo', N'TABLE', N'slave', N'COLUMN', 'master';
".Trim(), scr.Trim());
        }
コード例 #4
0
        public void TableWriterWithPkUniqueAndForeignKeyPostgresql()
        {
            var model  = PersistentModel.Compile(SimpleModel);
            var master = model["master"];
            var mwr    = new TableWriter(master)
            {
                Dialect     = DbDialect.PostGres,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };
            var scr = mwr.ToString();

            Console.WriteLine(scr.Replace("\"", "\"\""));
            Assert.AreEqual(@"
CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (nextval('""dbo"".""master_seq""')),
	""code"" varchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT ''
) TABLESPACE SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (-1, 'ERR');
COMMENT ON COLUMN ""dbo"".""master"".""code"" IS 'Код';
".Trim(), scr.Trim());
            var slave = model["slave"];
            var swr   = new TableWriter(slave)
            {
                Dialect     = DbDialect.PostGres,
                NoDelimiter = true,
                NoComment   = true,
                Mode        = ScriptMode.Create
            };

            scr = swr.ToString();
            Console.WriteLine(scr.Replace("\"", "\"\""));
            Assert.AreEqual(@"CREATE TABLE ""dbo"".""slave"" (
	""id"" int NOT NULL CONSTRAINT dbo_slave_id_pk PRIMARY KEY DEFAULT (nextval('""dbo"".""slave_seq""')),
	""version"" timestamp NOT NULL DEFAULT ('19000101'),
	""master"" int NOT NULL CONSTRAINT dbo_slave_master_master_id_fk REFERENCES ""dbo"".""master"" (""id"") DEFERRABLE DEFAULT 0
) TABLESPACE SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=0)  INSERT INTO ""dbo"".""slave"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=-1)  INSERT INTO ""dbo"".""slave"" (""id"", ""master"") VALUES (-1, -1);
COMMENT ON COLUMN ""dbo"".""slave"".""version"" IS 'Версия';
COMMENT ON COLUMN ""dbo"".""slave"".""master"" IS 'Главный объект';".Trim(), scr.Trim());
        }
コード例 #5
0
ファイル: WritersTest.cs プロジェクト: Qorpent/qorpent.sys
		public void CircularPreventFkes()
		{
			var model = PersistentModel.Compile(CircularModel);
			var master = model["master"];
			var mwr = new TableWriter(master)
			{
				Dialect = DbDialect.SqlServer,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};
			var scr = mwr.ToString();
			Console.WriteLine(scr.Replace("\"","\"\""));
			Assert.AreEqual(@"
CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""master_seq""),
	""code"" nvarchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT '',
	""slave"" int NOT NULL DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"", ""slave"") VALUES (-1, 'ERR', -1);
EXECUTE sp_addextendedproperty N'MS_Description', 'Код', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code';
EXECUTE sp_addextendedproperty N'MS_Description', 'Младший объект', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'slave';
".Trim(), scr.Trim());
			var slave = model["slave"];
			var swr = new TableWriter(slave)
			{
				Dialect = DbDialect.SqlServer,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};
			scr = swr.ToString();
			Console.WriteLine(scr.Replace("\"", "\"\""));
			Assert.AreEqual(@"
CREATE TABLE ""dbo"".""slave"" (
	""id"" int NOT NULL CONSTRAINT dbo_slave_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""slave_seq""),
	""version"" datetime NOT NULL DEFAULT ('19000101'),
	""master"" int NOT NULL DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=0)  INSERT INTO ""dbo"".""slave"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=-1)  INSERT INTO ""dbo"".""slave"" (""id"", ""master"") VALUES (-1, -1);
EXECUTE sp_addextendedproperty N'MS_Description', 'Версия', N'SCHEMA', N'dbo', N'TABLE', N'slave', N'COLUMN', 'version';
EXECUTE sp_addextendedproperty N'MS_Description', 'Главный объект', N'SCHEMA', N'dbo', N'TABLE', N'slave', N'COLUMN', 'master';
".Trim(), scr.Trim());
		}
コード例 #6
0
ファイル: WritersTest.cs プロジェクト: Qorpent/qorpent.sys
		public void TableWriterWithPkUniqueAndForeignKeyPostgresql()
		{
			var model = PersistentModel.Compile(SimpleModel);
			var master = model["master"];
			var mwr = new TableWriter(master)
			{
				Dialect = DbDialect.PostGres,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};
			var scr = mwr.ToString();
			Console.WriteLine(scr.Replace("\"","\"\""));
			Assert.AreEqual(@"
CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (nextval('""dbo"".""master_seq""')),
	""code"" varchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT ''
) TABLESPACE SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (-1, 'ERR');
COMMENT ON COLUMN ""dbo"".""master"".""code"" IS 'Код';
".Trim(), scr.Trim());
			var slave = model["slave"];
			var swr = new TableWriter(slave)
			{
				Dialect = DbDialect.PostGres,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};
			scr = swr.ToString();
			Console.WriteLine(scr.Replace("\"", "\"\""));
			Assert.AreEqual(@"CREATE TABLE ""dbo"".""slave"" (
	""id"" int NOT NULL CONSTRAINT dbo_slave_id_pk PRIMARY KEY DEFAULT (nextval('""dbo"".""slave_seq""')),
	""version"" timestamp NOT NULL DEFAULT ('19000101'),
	""master"" int NOT NULL CONSTRAINT dbo_slave_master_master_id_fk REFERENCES ""dbo"".""master"" (""id"") DEFERRABLE DEFAULT 0
) TABLESPACE SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=0)  INSERT INTO ""dbo"".""slave"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""slave"" where ""id""=-1)  INSERT INTO ""dbo"".""slave"" (""id"", ""master"") VALUES (-1, -1);
COMMENT ON COLUMN ""dbo"".""slave"".""version"" IS 'Версия';
COMMENT ON COLUMN ""dbo"".""slave"".""master"" IS 'Главный объект';".Trim(), scr.Trim());
		}
コード例 #7
0
ファイル: WritersTest.cs プロジェクト: Qorpent/qorpent.sys
		public void ComputeAsFieldWriter(){
			var model = PersistentModel.Compile(SimpleModelWithComputeBy);
			var master = model["master"];
			var mwr = new TableWriter(master)
			{
				Dialect = DbDialect.SqlServer,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};

			var scr = mwr.ToString();
			Console.WriteLine(scr.Replace("\"", "\"\""));
			Assert.AreEqual(@"CREATE TABLE ""dbo"".""master"" (
	""id"" int NOT NULL CONSTRAINT dbo_master_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""master_seq""),
	""code"" nvarchar(255) NOT NULL CONSTRAINT dbo_master_code_unq UNIQUE DEFAULT '',
	""code2"" AS (code+'a')
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=0)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (0, '/');
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""master"" where ""id""=-1)  INSERT INTO ""dbo"".""master"" (""id"", ""code"") VALUES (-1, 'ERR');
EXECUTE sp_addextendedproperty N'MS_Description', 'Код', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code';
EXECUTE sp_addextendedproperty N'MS_Description', 'Код2', N'SCHEMA', N'dbo', N'TABLE', N'master', N'COLUMN', 'code2';
".Trim(), scr.Trim());
		}
コード例 #8
0
ファイル: WritersTest.cs プロジェクト: Qorpent/qorpent.sys
		public void CanGenerateTableWithSystemName(string name){
			var code = @"
class " + name + @" prototype=dbtable
	ref " + name + @"
";
			var model = PersistentModel.Compile(code);
			var t = model[name];
			var mwr = new TableWriter(t)
			{
				Dialect = DbDialect.SqlServer,
				NoDelimiter = true,
				NoComment = true,
				Mode = ScriptMode.Create
			};
			var scr = mwr.ToString();
			Console.WriteLine(scr);
			//Console.WriteLine("------------------  for copy-paste --------------------------");
			//Console.WriteLine(scr.Replace("\"","\"\"").Replace("\""+name+"\"","\"{0}\"").Replace("_"+name+"_","_{0}_"));
			Assert.AreEqual(string.Format(@"CREATE TABLE ""dbo"".""{0}"" (
	""id"" int NOT NULL CONSTRAINT dbo_{0}_id_pk PRIMARY KEY DEFAULT (NEXT VALUE FOR ""dbo"".""{0}_seq""),
	""{0}"" int NOT NULL CONSTRAINT dbo_{0}_{0}_{0}_id_fk FOREIGN KEY REFERENCES ""dbo"".""{0}"" (""id"") DEFAULT 0
) ON SECONDARY;
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""{0}"" where ""id""=0)  INSERT INTO ""dbo"".""{0}"" (""id"") VALUES (0);
IF NOT EXISTS (SELECT TOP 1 * FROM ""dbo"".""{0}"" where ""id""=-1)  INSERT INTO ""dbo"".""{0}"" (""id"", ""{0}"") VALUES (-1, -1);
".Trim(),name), scr.Trim());
		}