better c# export, still TODO
This commit is contained in:
parent
dfb92358fc
commit
aca4c8d933
@ -87,30 +87,30 @@ public class C4 {
|
||||
this.databaseName = this.databaseName.toLowerCase();
|
||||
|
||||
|
||||
this.sqlScript = new StringBuffer();
|
||||
sqlScript = new StringBuffer();
|
||||
|
||||
this.sqlScript.append("-- #######################################################\n");
|
||||
this.sqlScript.append("-- auto generated ddl-script ###########################\n");
|
||||
this.sqlScript.append("-- generated sql creation script for ER model\n");
|
||||
this.sqlScript.append("-- switch autocommit off\n");
|
||||
this.sqlScript.append("set implicit_transactions off;\n");
|
||||
this.sqlScript.append("-- database-#############################################\n");
|
||||
this.sqlScript.append("use master;\n");
|
||||
this.sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
|
||||
this.sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
|
||||
this.sqlScript.append("go \n");
|
||||
this.sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("-- #######################################################\n");
|
||||
sqlScript.append("-- auto generated ddl-script ###########################\n");
|
||||
sqlScript.append("-- generated sql creation script for ER model\n");
|
||||
sqlScript.append("-- switch autocommit off\n");
|
||||
sqlScript.append("set implicit_transactions off;\n");
|
||||
sqlScript.append("-- database-#############################################\n");
|
||||
sqlScript.append("use master;\n");
|
||||
sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("go \n");
|
||||
sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
|
||||
|
||||
this.sqlScript.append("-- tables-#################################################\n");
|
||||
sqlScript.append("-- tables-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
this.sqlScript = this.sqlScript.append("-- table ").append(table.getTablename()).append("\n");
|
||||
this.sqlScript = this.sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
|
||||
sqlScript = sqlScript.append("-- table ").append(table.getTablename()).append("\n");
|
||||
sqlScript = sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
|
||||
StringBuilder keypart = new StringBuilder("primary key(");
|
||||
|
||||
int autoincrementCounter = 0;
|
||||
for (C3 column : table.getSkjdfhgdskjf674534()) {
|
||||
keypart.append(column.isKey() ? (column.getColumnName() + ",") : "");
|
||||
this.sqlScript = this.sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
|
||||
sqlScript = sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
|
||||
!column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? (" identity (" + column.getAutoincrementStartAt() + ",1) ") : "").append(column.isUnique() ? " unique" : "").append(",").append("\n");
|
||||
if (column.isAutoincrement()) {
|
||||
autoincrementCounter++;
|
||||
@ -120,8 +120,8 @@ public class C4 {
|
||||
|
||||
keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1));
|
||||
keypart.append(")").append("\n");
|
||||
this.sqlScript = this.sqlScript.append(addChars()).append(keypart).append(")");
|
||||
this.sqlScript.append(";\n\n");
|
||||
sqlScript = sqlScript.append(addChars()).append(keypart).append(")");
|
||||
sqlScript.append(";\n\n");
|
||||
if (autoincrementCounter != 1) {
|
||||
|
||||
if (autoincrementCounter > 1) {
|
||||
@ -137,11 +137,11 @@ public class C4 {
|
||||
} catch (ZZ20 ex) {
|
||||
throw new ZZ20(ex.getMessage());
|
||||
}
|
||||
createInsertStatements(this.sqlScript, singeInserts, false);
|
||||
createInsertStatements(sqlScript, singeInserts, false);
|
||||
}
|
||||
|
||||
|
||||
this.sqlScript.append("\n-- foreign keys-#################################################\n");
|
||||
sqlScript.append("\n-- foreign keys-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
|
||||
ArrayList<C3> fkColumns = new ArrayList<>();
|
||||
@ -168,9 +168,9 @@ public class C4 {
|
||||
}
|
||||
}
|
||||
for (C3 col : equalColumnsBecauseRecursive) {
|
||||
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
this.sqlScript.append("add foreign key (");
|
||||
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete no action on update no action;\n");
|
||||
sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
sqlScript.append("add foreign key (");
|
||||
sqlScript = sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete no action on update no action;\n");
|
||||
|
||||
tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
|
||||
}
|
||||
@ -178,8 +178,8 @@ public class C4 {
|
||||
|
||||
for (String tableName : tableNamesInfkColumns) {
|
||||
|
||||
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
this.sqlScript.append("add foreign key (");
|
||||
sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
sqlScript.append("add foreign key (");
|
||||
StringBuilder columnsOrig = new StringBuilder();
|
||||
StringBuilder refColumns = new StringBuilder(" references " + tableName + "(");
|
||||
for (C3 fkcolumn : fkColumns) {
|
||||
@ -192,15 +192,15 @@ public class C4 {
|
||||
columnsOrig.append(")");
|
||||
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
|
||||
refColumns.append(")");
|
||||
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete no action on update no action;\n");
|
||||
sqlScript.append(columnsOrig).append(refColumns).append(" on delete no action on update no action;\n");
|
||||
}
|
||||
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n");
|
||||
sqlScript.replace(sqlScript.length() - 2, sqlScript.length(), ";\n");
|
||||
}
|
||||
|
||||
this.sqlScript.append("-- commit all changes\n");
|
||||
this.sqlScript.append("commit;");
|
||||
sqlScript.append("-- commit all changes\n");
|
||||
sqlScript.append("commit;");
|
||||
|
||||
return this.sqlScript;
|
||||
return sqlScript;
|
||||
}
|
||||
|
||||
|
||||
@ -219,29 +219,29 @@ public class C4 {
|
||||
|
||||
this.databaseName = this.databaseName.toLowerCase();
|
||||
|
||||
this.sqlScript = new StringBuffer();
|
||||
sqlScript = new StringBuffer();
|
||||
|
||||
this.sqlScript.append("-- #######################################################\n");
|
||||
this.sqlScript.append("-- auto generated ddl-script ###########################\n");
|
||||
this.sqlScript.append("-- generated sql creation script for ER model\n");
|
||||
this.sqlScript.append("-- database-#############################################\n");
|
||||
this.sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
|
||||
this.sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
|
||||
this.sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
|
||||
this.sqlScript.append("-- switch autocommit off\n");
|
||||
this.sqlScript.append("set autocommit=0;\n");
|
||||
sqlScript.append("-- #######################################################\n");
|
||||
sqlScript.append("-- auto generated ddl-script ###########################\n");
|
||||
sqlScript.append("-- generated sql creation script for ER model\n");
|
||||
sqlScript.append("-- database-#############################################\n");
|
||||
sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
|
||||
sqlScript.append("-- switch autocommit off\n");
|
||||
sqlScript.append("set autocommit=0;\n");
|
||||
|
||||
this.sqlScript.append("-- tables-#################################################\n");
|
||||
sqlScript.append("-- tables-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
this.sqlScript = this.sqlScript.append("-- table ").append(table.getTablename()).append("\n");
|
||||
this.sqlScript = this.sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
|
||||
sqlScript = sqlScript.append("-- table ").append(table.getTablename()).append("\n");
|
||||
sqlScript = sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
|
||||
StringBuilder keypart = new StringBuilder("primary key(");
|
||||
|
||||
int autoincrementCounter = 0;
|
||||
long holdAutoincrementStartAt = 1L;
|
||||
for (C3 column : table.getSkjdfhgdskjf674534()) {
|
||||
keypart.append(column.isKey() ? (column.getColumnName() + ",") : "");
|
||||
this.sqlScript = this.sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
|
||||
sqlScript = sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
|
||||
!column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? " auto_increment " : "").append(column.isUnique() ? " unique" : "").append(",").append("\n");
|
||||
if (column.isAutoincrement()) {
|
||||
autoincrementCounter++;
|
||||
@ -251,13 +251,13 @@ public class C4 {
|
||||
|
||||
keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1));
|
||||
keypart.append(")").append("\n");
|
||||
this.sqlScript = this.sqlScript.append(addChars()).append(keypart).append(")");
|
||||
sqlScript = sqlScript.append(addChars()).append(keypart).append(")");
|
||||
if (autoincrementCounter == 1) {
|
||||
this.sqlScript.append("auto_increment=").append(holdAutoincrementStartAt);
|
||||
sqlScript.append("auto_increment=").append(holdAutoincrementStartAt);
|
||||
} else if (autoincrementCounter > 1) {
|
||||
throw new ZZ20("There is only one autoincrement value allowed, and it must be the key. Table: " + table.getTablename());
|
||||
}
|
||||
this.sqlScript.append(";\n\n");
|
||||
sqlScript.append(";\n\n");
|
||||
}
|
||||
|
||||
|
||||
@ -269,11 +269,11 @@ public class C4 {
|
||||
throw new ZZ20(ex.getMessage());
|
||||
}
|
||||
|
||||
createInsertStatements(this.sqlScript, singeInserts, true);
|
||||
createInsertStatements(sqlScript, singeInserts, true);
|
||||
}
|
||||
|
||||
|
||||
this.sqlScript.append("\n-- foreign keys-#################################################\n");
|
||||
sqlScript.append("\n-- foreign keys-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
|
||||
ArrayList<C3> fkColumns = new ArrayList<>();
|
||||
@ -282,7 +282,7 @@ public class C4 {
|
||||
}
|
||||
if (fkColumns.size() == 0)
|
||||
continue;
|
||||
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
|
||||
|
||||
HashSet<String> tableNamesInfkColumns = new HashSet<>();
|
||||
@ -301,8 +301,8 @@ public class C4 {
|
||||
}
|
||||
}
|
||||
for (C3 col : equalColumnsBecauseRecursive) {
|
||||
this.sqlScript.append("add foreign key (");
|
||||
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
|
||||
sqlScript.append("add foreign key (");
|
||||
sqlScript = sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
|
||||
|
||||
tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
|
||||
}
|
||||
@ -310,7 +310,7 @@ public class C4 {
|
||||
|
||||
for (String tableName : tableNamesInfkColumns) {
|
||||
|
||||
this.sqlScript.append("add foreign key (");
|
||||
sqlScript.append("add foreign key (");
|
||||
StringBuilder columnsOrig = new StringBuilder();
|
||||
StringBuilder refColumns = new StringBuilder(" references " + tableName + "(");
|
||||
for (C3 fkcolumn : fkColumns) {
|
||||
@ -323,15 +323,15 @@ public class C4 {
|
||||
columnsOrig.append(")");
|
||||
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
|
||||
refColumns.append(")");
|
||||
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
|
||||
sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
|
||||
}
|
||||
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n");
|
||||
sqlScript.replace(sqlScript.length() - 2, sqlScript.length(), ";\n");
|
||||
}
|
||||
|
||||
this.sqlScript.append("-- commit all changes\n");
|
||||
this.sqlScript.append("commit;");
|
||||
sqlScript.append("-- commit all changes\n");
|
||||
sqlScript.append("commit;");
|
||||
|
||||
return this.sqlScript;
|
||||
return sqlScript;
|
||||
}
|
||||
|
||||
|
||||
@ -384,99 +384,63 @@ public class C4 {
|
||||
return csType != null ? csType : "object";
|
||||
}
|
||||
|
||||
public StringBuffer create_CS_Script() throws ZZ20 {
|
||||
|
||||
this.databaseName = T3.replaceSpecialChars(this.databaseName);
|
||||
|
||||
this.databaseName = this.databaseName.toLowerCase();
|
||||
|
||||
this.sqlScript = new StringBuffer();
|
||||
|
||||
this.sqlScript.append("var opt = new DbContextOptionsBuilder()\n" + " .UseSqlite(@\"Data Source=").append(this.databaseName).append(".db\")\n").append(" .Options;\n");
|
||||
|
||||
this.sqlScript.append("// tables-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
if(table.getSkjdfhgdskjf674534().size() > 0) {
|
||||
this.sqlScript = this.sqlScript.append("[Table(\"").append(table.getTablename()).append("\")]\n");
|
||||
this.sqlScript = this.sqlScript.append("public class ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append(" {").append("\n");
|
||||
|
||||
StringBuilder constructorbuilder = new StringBuilder("\n").append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(");
|
||||
StringBuilder innerconstructorbuilder = new StringBuilder();
|
||||
|
||||
int autoincrementCounter = 0;
|
||||
long holdAutoincrementStartAt = 1L;
|
||||
for (C3 column : table.getSkjdfhgdskjf674534()) {
|
||||
System.out.println(column.getColumnName()+"\t"+sqltoCSType(column.getDatatype()));
|
||||
String shortcolumnname = column.getColumnName().substring(column.getColumnName().lastIndexOf('_')+1);
|
||||
this.sqlScript.append(addChars())
|
||||
.append(column.isKey() ? ("[Key]\n"+addChars()) : "")
|
||||
.append("[Column(TypeName=\"")
|
||||
.append(column.getDatatype())
|
||||
.append("\")]\n")
|
||||
.append(addChars())
|
||||
.append(!column.isNullable() ? "[Required]\n"+addChars() : "")
|
||||
.append(column.isUnique()?"[Index(\""+column.getColumnName()+"Index\", IsUnique = true)]":"")
|
||||
.append(column.isAutoincrement()?"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]":"")
|
||||
.append(sqltoCSType(column.getDatatype()))
|
||||
.append(" ")
|
||||
//a_id = id, a_b_id = id
|
||||
.append(shortcolumnname)
|
||||
.append(" { get; ")
|
||||
.append(column.isKey()?"":"private ")
|
||||
.append("set; }\n");
|
||||
constructorbuilder.append(sqltoCSType(column.getDatatype()))
|
||||
.append(" ").append(shortcolumnname).append(", ");
|
||||
|
||||
innerconstructorbuilder.append(addChars()).append(addChars()).append("this.").append(shortcolumnname).append("=").append(shortcolumnname).append(";\n");
|
||||
|
||||
if (column.isAutoincrement()) {
|
||||
autoincrementCounter++;
|
||||
holdAutoincrementStartAt = column.getAutoincrementStartAt();
|
||||
}
|
||||
public static String shortname(String s) {
|
||||
return s.substring(s.lastIndexOf('_')+1);
|
||||
}
|
||||
|
||||
constructorbuilder.delete(constructorbuilder.length()-2,constructorbuilder.length());
|
||||
constructorbuilder.append(") {\n").append(innerconstructorbuilder).append(addChars()).append("}\n");
|
||||
|
||||
sqlScript.append(addChars()).append(constructorbuilder).append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(){}\n");
|
||||
|
||||
this.sqlScript.append("}");
|
||||
/*
|
||||
if (autoincrementCounter == 1) {
|
||||
this.sqlScript.append("auto_increment=").append(holdAutoincrementStartAt);
|
||||
} else if (autoincrementCounter > 1) {
|
||||
throw new ZZ20("There is only one autoincrement value allowed, and it must be the key. Table: " + table.getTablename());
|
||||
}
|
||||
*/
|
||||
this.sqlScript.append("\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
public static string convertSqlToCSharp(string sqlStatement)
|
||||
public static String convertSqlToCSharp(String sqlStatement)
|
||||
{
|
||||
// Split the SQL statement by spaces and identify the foreign key keywords
|
||||
string[] words = sqlStatement.Split(' ');
|
||||
int index = Array.IndexOf(words, "FOREIGN") + 1;
|
||||
|
||||
System.out.println(sqlStatement);
|
||||
String[] words = sqlStatement.split(" ");
|
||||
int index = -1; //Array.IndexOf(words, "FOREIGN") + 1;
|
||||
StringBuilder csharpCode = new StringBuilder("\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\t{\n");
|
||||
for (int i = 0; i < words.length; i++) {
|
||||
System.out.println(words[i]);
|
||||
if (words[i].equalsIgnoreCase("FOREIGN")) {
|
||||
index = i;
|
||||
// Extract the table names and key names from the SQL statement
|
||||
string primaryTable = words[index - 3];
|
||||
string primaryKey = words[index - 1];
|
||||
string foreignTable = words[index + 2];
|
||||
string foreignKey = words[index + 4];
|
||||
String primaryTable = words[index - 2];
|
||||
String primaryKey = words[index + 2];
|
||||
String foreignTable = words[index + 4];
|
||||
String foreignKey = words[index + 5];
|
||||
foreignKey = foreignKey.substring(1,foreignKey.length()-1);
|
||||
|
||||
foreignTable = shortname(foreignTable);
|
||||
foreignKey = shortname(foreignKey);
|
||||
|
||||
// Generate the C# EF Core code based on the extracted information
|
||||
string csharpCode = "modelBuilder.Entity<" + foreignTable + ">()\n";
|
||||
csharpCode += ".HasOne(" + foreignTable.ToLower() + " => " + foreignTable.ToLower() + "." + foreignKey + ")\n";
|
||||
csharpCode += ".WithMany()\n";
|
||||
csharpCode += ".HasForeignKey(" + foreignTable.ToLower() + " => " + foreignTable.ToLower() + "." + foreignKey + ");\n";
|
||||
|
||||
return csharpCode;
|
||||
csharpCode.append("\t\tmodelBuilder.Entity<").append(foreignTable).append(">()\n");
|
||||
csharpCode.append("\t\t.HasOne(e => e.").append(foreignKey.toLowerCase()).append(")\n");
|
||||
csharpCode.append("\t\t.WithMany(e => e.").append(primaryTable.toLowerCase()).append(")\n");
|
||||
csharpCode.append("\t\t.HasForeignKey(\"").append(foreignKey).append("\");\n\n");
|
||||
}
|
||||
TODO: use function
|
||||
}
|
||||
csharpCode.append("\t}\n");
|
||||
|
||||
*/
|
||||
this.sqlScript.append("\n/* TODO: foreign keys-#################################################\n");
|
||||
|
||||
|
||||
|
||||
return csharpCode.toString();
|
||||
}
|
||||
|
||||
public StringBuffer create_CS_Script() throws ZZ20 {
|
||||
|
||||
this.databaseName = T3.replaceSpecialChars(this.databaseName.toLowerCase());
|
||||
|
||||
sqlScript = new StringBuffer();
|
||||
|
||||
sqlScript.append("using Microsoft.EntityFrameworkCore;\n");
|
||||
|
||||
sqlScript.append("public partial class DataBase: DbContext {\n\n\tpublic DataBase(){}\n\n\tpublic DataBase(DbContextOptions<DataBase> options) : base(options) {}\n\n");
|
||||
|
||||
/*
|
||||
sqlScript.append("\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite(\"Data Source=")
|
||||
.append(this.databaseName)
|
||||
.append(".db\");\n");
|
||||
|
||||
sqlScript.append("\n\t//foreign keys-#################################################\n");
|
||||
StringBuilder foreignKeyBuilder = new StringBuilder();
|
||||
for (T1 table : this.tables) {
|
||||
|
||||
ArrayList<C3> fkColumns = new ArrayList<>();
|
||||
@ -485,7 +449,7 @@ public class C4 {
|
||||
}
|
||||
if (fkColumns.size() == 0)
|
||||
continue;
|
||||
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n");
|
||||
foreignKeyBuilder.append("alter table ").append(table.getTablename()).append("\n");
|
||||
|
||||
|
||||
HashSet<String> tableNamesInfkColumns = new HashSet<>();
|
||||
@ -504,8 +468,8 @@ public class C4 {
|
||||
}
|
||||
}
|
||||
for (C3 col : equalColumnsBecauseRecursive) {
|
||||
this.sqlScript.append("add foreign key (");
|
||||
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
|
||||
foreignKeyBuilder.append("add foreign key (");
|
||||
foreignKeyBuilder.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append(" (").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
|
||||
|
||||
tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
|
||||
}
|
||||
@ -513,7 +477,7 @@ public class C4 {
|
||||
|
||||
for (String tableName : tableNamesInfkColumns) {
|
||||
|
||||
this.sqlScript.append("add foreign key (");
|
||||
foreignKeyBuilder.append("add foreign key (");
|
||||
StringBuilder columnsOrig = new StringBuilder();
|
||||
StringBuilder refColumns = new StringBuilder(" references " + tableName + " (");
|
||||
for (C3 fkcolumn : fkColumns) {
|
||||
@ -526,14 +490,75 @@ public class C4 {
|
||||
columnsOrig.append(")");
|
||||
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
|
||||
refColumns.append(")");
|
||||
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
|
||||
foreignKeyBuilder.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
|
||||
}
|
||||
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n");
|
||||
foreignKeyBuilder.replace(foreignKeyBuilder.length() - 2, foreignKeyBuilder.length(), ";\n");
|
||||
}
|
||||
sqlScript.append(convertSqlToCSharp(foreignKeyBuilder.toString()));
|
||||
*/
|
||||
sqlScript.append("}\n");
|
||||
|
||||
|
||||
sqlScript.append("// tables-#################################################\n");
|
||||
for (T1 table : this.tables) {
|
||||
if(table.getSkjdfhgdskjf674534().size() > 0) {
|
||||
sqlScript = sqlScript.append("[Table(\"").append(table.getTablename()).append("\")]\n");
|
||||
sqlScript = sqlScript.append("public class ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append(" {").append("\n");
|
||||
|
||||
StringBuilder constructorbuilder = new StringBuilder("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(");
|
||||
StringBuilder innerconstructorbuilder = new StringBuilder();
|
||||
|
||||
for (C3 column : table.getSkjdfhgdskjf674534()) {
|
||||
System.out.println(column.getColumnName()+"\t"+sqltoCSType(column.getDatatype()));
|
||||
String shortcolumnname = shortname(column.getColumnName());
|
||||
sqlScript.append(addChars())
|
||||
.append(column.isKey() ? ("[Key]\n"+addChars()) : "")
|
||||
.append("[Column(TypeName=\"")
|
||||
.append(column.getDatatype())
|
||||
.append("\")]\n")
|
||||
.append(addChars())
|
||||
.append(!column.isNullable() ? "[Required]\n"+addChars() : "")
|
||||
.append(column.isUnique()?"[Index(\""+column.getColumnName()+"Index\", IsUnique = true)]\n"+addChars():"")
|
||||
.append(column.isAutoincrement()?"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]\n"+addChars():"");
|
||||
if(column.getReferencesTo() != null) {
|
||||
sqlScript.append("[ForeignKey(\"").append(shortname(table.getTablename())).append(shortcolumnname).append("-").append(shortname(column.getReferencesTo().tablename())).append(shortname(column.getReferencesTo().columnname())).append("\")]\n").append(addChars());
|
||||
//[ForeignKey("Co_Department")]
|
||||
//[InverseProperty("De_Courses")]
|
||||
}
|
||||
|
||||
this.sqlScript.append("*/");
|
||||
sqlScript.append("public ").append(sqltoCSType(column.getDatatype()))
|
||||
.append(" ")
|
||||
.append(shortcolumnname)
|
||||
.append(" { get; ")
|
||||
.append(column.isKey()?"private ": "")
|
||||
.append("set; }\n");
|
||||
|
||||
return this.sqlScript;
|
||||
|
||||
if(column.isKey())continue;
|
||||
|
||||
constructorbuilder.append(sqltoCSType(column.getDatatype()))
|
||||
.append(" ").append(shortcolumnname).append(", ");
|
||||
|
||||
innerconstructorbuilder.append(addChars()).append(addChars()).append("this.").append(shortcolumnname).append("=").append(shortcolumnname).append(";\n");
|
||||
}
|
||||
|
||||
constructorbuilder.delete(constructorbuilder.length()-2,constructorbuilder.length());
|
||||
constructorbuilder.append(") {\n").append(innerconstructorbuilder).append(addChars()).append("}\n");
|
||||
|
||||
sqlScript.append("\n");
|
||||
|
||||
if(table.getKeyColumns().size()!=table.getSkjdfhgdskjf674534().size())
|
||||
sqlScript.append(addChars()).append(constructorbuilder); //no constructor for tables with only keys
|
||||
|
||||
sqlScript.append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(){}\n");
|
||||
|
||||
sqlScript.append("}\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
//sqlScript.append("*/");
|
||||
|
||||
return sqlScript;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user