Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>How did you solve this? My implementing your own idgenerator?</p> <p>I did and maybe a little bit dirty for the moment but anyway:</p> <pre><code>public class TableHiLoGeneratorWithMultipleColumns : NHibernate.Id.TableHiLoGenerator { static HashSet&lt;string&gt; tables = new HashSet&lt;string&gt;(); public override void Configure(IType type, IDictionary&lt;string, string&gt; parms, Dialect dialect) { string table; if (parms.ContainsKey("target_table")) { table = parms["target_table"]; tables.Add(table); parms["column"] = string.Format("{0}_{1}", DefaultColumnName, table); } base.Configure(type, parms, dialect); } public override string[] SqlCreateStrings(Dialect dialect) { string createTableTemplate = "create table " + DefaultTableName + "({0})"; string insertInitialValuesTemplate = "insert into " + DefaultTableName + "({0})" + " values ( {1} )"; StringBuilder createTables = new StringBuilder(); StringBuilder columns = new StringBuilder(); StringBuilder inserts = new StringBuilder(); StringBuilder initialInsert = new StringBuilder(); StringBuilder insertsValues = new StringBuilder(); foreach (string table in tables) { columns.AppendFormat("{0}_{1} {2},", DefaultColumnName, table, dialect.GetTypeName(columnSqlType)); inserts.AppendFormat("{0}_{1},", DefaultColumnName, table); insertsValues.Append("1, "); } columns.Remove(columns.Length - 1, 1); inserts.Remove(inserts.Length - 1, 1); createTables.AppendFormat(createTableTemplate, columns); insertsValues.Remove(insertsValues.Length - 2, 2); initialInsert.AppendFormat(insertInitialValuesTemplate, inserts, insertsValues); return new[] { createTables.ToString(), initialInsert.ToString() }; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload