/// <summary> /// Create a JET_INDEXCREATE for the specified index. /// </summary> /// <param name="name">Name of the index.</param> /// <param name="key">Index key.</param> /// <param name="mustBeTrue">Columns that must be null.</param> /// <param name="mustBeFalse">Columns that must not be null.</param> /// <returns>A JET_INDEXCREATE describing the index.</returns> private static JET_INDEXCREATE GetIndexCreate(string name, string key, string[] mustBeTrue, string[] mustBeFalse) { var conditionalcolumns = new JET_CONDITIONALCOLUMN[mustBeTrue.Length + mustBeFalse.Length]; int i = 0; foreach (string column in mustBeTrue) { conditionalcolumns[i++] = new JET_CONDITIONALCOLUMN { szColumnName = column, grbit = ConditionalColumnGrbit.ColumnMustBeNonNull, }; } foreach (string column in mustBeFalse) { conditionalcolumns[i++] = new JET_CONDITIONALCOLUMN { szColumnName = column, grbit = ConditionalColumnGrbit.ColumnMustBeNull, }; } return(new JET_INDEXCREATE { szIndexName = name, szKey = key, cbKey = key.Length, rgconditionalcolumn = conditionalcolumns, cConditionalColumn = conditionalcolumns.Length, }); }
public void VerifyConditionalColumnCanBeSerialized() { var expected = new JET_CONDITIONALCOLUMN { szColumnName = "column" }; SerializeAndCompareContent(expected); }
public void JetConditionalColumnToString() { var conditionalcolumn = new JET_CONDITIONALCOLUMN { szColumnName = "Foo", grbit = ConditionalColumnGrbit.ColumnMustBeNull }; Assert.AreEqual("JET_CONDITIONALCOLUMN(Foo:ColumnMustBeNull)", conditionalcolumn.ToString()); }
public void Setup() { this.managed = new JET_CONDITIONALCOLUMN { szColumnName = "column", grbit = ConditionalColumnGrbit.ColumnMustBeNonNull, }; this.native = this.managed.GetNativeConditionalColumn(); }
public void VerifyJetConditionalColumnEquality() { var x = new JET_CONDITIONALCOLUMN { szColumnName = "Column", grbit = ConditionalColumnGrbit.ColumnMustBeNonNull }; var y = new JET_CONDITIONALCOLUMN { szColumnName = "Column", grbit = ConditionalColumnGrbit.ColumnMustBeNonNull }; TestContentEquals(x, y); }
/// <summary> /// Converts a <see cref="IndexDefinition"/> to an array of <see cref="JET_CONDITIONALCOLUMN"/> objects. /// </summary> /// <param name="indexDefinition">The index definition.</param> /// <returns>An array of <see cref="JET_CONDITIONALCOLUMN"/> objects.</returns> internal static JET_CONDITIONALCOLUMN[] ConditionalColumnsFromIndexDefinition(IndexDefinition indexDefinition) { JET_CONDITIONALCOLUMN[] conditionalColumns = new JET_CONDITIONALCOLUMN[indexDefinition.ConditionalColumns.Count]; for (int col = 0; col < conditionalColumns.Length; ++col) { conditionalColumns[col] = new JET_CONDITIONALCOLUMN(); } int i = 0; foreach (ConditionalColumn conditionalColumn in indexDefinition.ConditionalColumns) { conditionalColumns[i].szColumnName = conditionalColumn.Name; conditionalColumns[i].grbit = conditionalColumn.MustBeNull ? ConditionalColumnGrbit.ColumnMustBeNull : ConditionalColumnGrbit.ColumnMustBeNonNull; i++; } return(conditionalColumns); }
/// <summary>Add conditional columns data to the supplied <see cref="JET_INDEXCREATE" />.</summary> /// <param name="ic"></param> protected void setConditionalColumns(JET_INDEXCREATE ic) { if (String.IsNullOrEmpty(condition)) { ic.cConditionalColumn = 0; ic.rgconditionalcolumn = null; return; } var res = new List <JET_CONDITIONALCOLUMN>(); var arrTokens = condition.Split(new char[1] { '\0' }, StringSplitOptions.None); foreach (string strToken in arrTokens) { JET_CONDITIONALCOLUMN cc = new JET_CONDITIONALCOLUMN(); if ('+' == strToken[0]) { cc.grbit = ConditionalColumnGrbit.ColumnMustBeNonNull; } else if ('-' == strToken[0]) { cc.grbit = ConditionalColumnGrbit.ColumnMustBeNull; } else { throw new System.Runtime.Serialization.SerializationException("existence specifier not found in the conditional column token " + strToken); } cc.szColumnName = strToken.Substring(1); res.Add(cc); } ic.cConditionalColumn = res.Count; ic.rgconditionalcolumn = res.ToArray(); }