in EsentInteropTests/ColumnInfoTests.cs [84:212]
public void Setup()
{
this.directory = SetupHelper.CreateRandomDirectory();
this.database = Path.Combine(this.directory, "database.edb");
this.instance = SetupHelper.CreateNewInstance(this.directory);
Api.JetSetSystemParameter(this.instance, JET_SESID.Nil, JET_param.Recovery, 0, "off");
Api.JetInit(ref this.instance);
Api.JetBeginSession(this.instance, out this.sesid, string.Empty, string.Empty);
Api.JetCreateDatabase(this.sesid, this.database, string.Empty, out this.dbid, CreateDatabaseGrbit.None);
Api.JetBeginTransaction(this.sesid);
this.columncreatesBase = new JET_COLUMNCREATE[]
{
new JET_COLUMNCREATE()
{
szColumnName = "col1_short",
coltyp = JET_coltyp.Short,
grbit = ColumndefGrbit.ColumnFixed,
cbMax = 2,
},
new JET_COLUMNCREATE()
{
szColumnName = "col2_longtext",
coltyp = JET_coltyp.LongText,
cp = JET_CP.Unicode,
},
};
this.columncreatesChild = new JET_COLUMNCREATE[]
{
new JET_COLUMNCREATE()
{
szColumnName = "col1_short_child",
coltyp = JET_coltyp.Short,
cbMax = 2,
},
new JET_COLUMNCREATE()
{
szColumnName = "col2_longtext_child",
coltyp = JET_coltyp.LongText,
grbit = ColumndefGrbit.ColumnTagged,
cp = JET_CP.Unicode,
},
};
const string Index1Name = "firstIndex";
const string Index1Description = "+col1_short\0-col2_longtext\0";
const string Index2Name = "secondIndex";
const string Index2Description = "+col2_longtext\0-col1_short\0";
var indexcreates = new JET_INDEXCREATE[]
{
new JET_INDEXCREATE
{
szIndexName = Index1Name,
szKey = Index1Description,
cbKey = Index1Description.Length + 1,
grbit = CreateIndexGrbit.None,
ulDensity = 99,
},
new JET_INDEXCREATE
{
szIndexName = Index2Name,
szKey = Index2Description,
cbKey = Index2Description.Length + 1,
grbit = CreateIndexGrbit.None,
ulDensity = 79,
},
};
this.tablecreateTemplate = new JET_TABLECREATE()
{
szTableName = "tableBase",
ulPages = 23,
ulDensity = 75,
cColumns = this.columncreatesBase.Length,
rgcolumncreate = this.columncreatesBase,
rgindexcreate = indexcreates,
cIndexes = indexcreates.Length,
cbSeparateLV = 100,
cbtyp = JET_cbtyp.Null,
grbit = CreateTableColumnIndexGrbit.TemplateTable,
};
Api.JetBeginTransaction(this.sesid);
Api.JetCreateTableColumnIndex3(this.sesid, this.dbid, this.tablecreateTemplate);
var columndef = new JET_COLUMNDEF()
{
cp = JET_CP.Unicode,
coltyp = JET_coltyp.LongText,
};
var tableCreated = new JET_TABLEID()
{
Value = this.tablecreateTemplate.tableid.Value
};
Api.JetCloseTable(this.sesid, tableCreated);
this.tablecreateChild = new JET_TABLECREATE()
{
szTableName = "tableChild",
szTemplateTableName = "tableBase",
ulPages = 23,
ulDensity = 75,
rgcolumncreate = this.columncreatesChild,
cColumns = this.columncreatesChild.Length,
rgindexcreate = null,
cIndexes = 0,
cbSeparateLV = 100,
cbtyp = JET_cbtyp.Null,
grbit = CreateTableColumnIndexGrbit.None,
};
Api.JetCreateTableColumnIndex3(this.sesid, this.dbid, this.tablecreateChild);
this.tableidChild = new JET_TABLEID()
{
Value = this.tablecreateChild.tableid.Value
};
Api.JetCloseTable(this.sesid, this.tableidChild);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
Api.JetOpenTable(this.sesid, this.dbid, this.tablecreateTemplate.szTableName, null, 0, OpenTableGrbit.None, out this.tableidParent);
Api.JetOpenTable(this.sesid, this.dbid, this.tablecreateChild.szTableName, null, 0, OpenTableGrbit.None, out this.tableidChild);
}