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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }