本文整理汇总了C#中CodeWriter.WriteRawIf方法的典型用法代码示例。如果您正苦于以下问题:C# CodeWriter.WriteRawIf方法的具体用法?C# CodeWriter.WriteRawIf怎么用?C# CodeWriter.WriteRawIf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeWriter
的用法示例。
在下文中一共展示了CodeWriter.WriteRawIf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteClassParent
//.........这里部分代码省略.........
// 1.2. or HasLoadedOrAssignedValue is false (but why?)
// 2. implementations before change
// 3. if previous value not null
// 3.1. place parent in temp variable
// 3.2. set [Storage].Entity to null
// 3.3. remove it from parent list
// 4. assign value to [Storage].Entity
// 5. if value is not null
// 5.1. add it to parent list
// 5.2. set FK members with entity keys
// 6. else
// 6.1. set FK members to defaults (null or 0)
// 7. implementationas after change
//writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(storage, writer.GetPropertySetValueExpression())));
var entityMember = writer.GetMemberExpression(parent.Storage, "Entity");
// 1.1
using (writer.WriteIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(),
entityMember)))
{
var otherAssociation = schema.GetReverseAssociation(parent);
// 2. code before the change
// TODO change interface to require a member instead of a column
//foreach (IImplementation implementation in context.Implementations())
// implementation.WritePropertyBeforeSet(writer, ???, context);
// 3.
using (writer.WriteIf(writer.GetDifferentExpression(entityMember, writer.GetNullExpression())))
{
var previousEntityRefName = "previous" + parent.Type;
// 3.1.
writer.WriteLine(writer.GetStatement(
writer.GetVariableDeclarationInitialization(parent.Type, previousEntityRefName, entityMember)
));
// 3.2.
writer.WriteLine(writer.GetStatement(
writer.GetAssignmentExpression(entityMember, writer.GetNullExpression())
));
// 3.3.
writer.WriteLine(writer.GetStatement(
writer.GetMethodCallExpression(
writer.GetMemberExpression(writer.GetMemberExpression(previousEntityRefName, otherAssociation.Member), "Remove"),
writer.GetThisExpression())
));
}
// 4.
writer.WriteLine(writer.GetStatement(
writer.GetAssignmentExpression(entityMember, writer.GetPropertySetValueExpression())
));
// 5. if value is null or not
writer.WriteRawIf(writer.GetDifferentExpression(writer.GetPropertySetValueExpression(), writer.GetNullExpression()));
// 5.1.
writer.WriteLine(writer.GetStatement(
writer.GetMethodCallExpression(
writer.GetMemberExpression(writer.GetMemberExpression(writer.GetPropertySetValueExpression(), otherAssociation.Member), "Add"),
writer.GetThisExpression())
));
// 5.2
var table = schema.Tables.Single(t => t.Type.Associations.Contains(parent));
var childKeys = parent.TheseKeys.ToArray();
var childColumns = (from ck in childKeys select table.Type.Columns.Single(c => c.Member == ck))
.ToArray();
var parentKeys = parent.OtherKeys.ToArray();
for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
{
writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
writer.GetMemberExpression(writer.GetPropertySetValueExpression(), parentKeys[keyIndex])
)));
}
// 6.
writer.WriteRawElse();
// 6.1.
for (int keyIndex = 0; keyIndex < parentKeys.Length; keyIndex++)
{
var column = table.Type.Columns.Single(c => c.Member == childKeys[keyIndex]);
var columnType = System.Type.GetType(column.Type);
var columnLiteralType = columnType != null ? writer.GetLiteralType(columnType) : column.Type;
writer.WriteLine(writer.GetStatement(writer.GetAssignmentExpression(
childColumns[keyIndex].Storage ?? childColumns[keyIndex].Member,
column.CanBeNull ? writer.GetNullExpression() : writer.GetNullValueExpression(columnLiteralType)
)));
}
writer.WriteRawEndif();
// 7. code after change
// TODO change interface to require a member instead of a column
//foreach (IImplementation implementation in context.Implementations())
// implementation.WritePropertyAfterSet(writer, ???, context);
}
}
}
writer.WriteLine();
}