public override void Visit(DbPropertyExpression expression) { this._commandText.Append(DmlSqlGenerator.GenerateMemberTSql(expression.Property)); }
private static void GenerateReturningSql(StringBuilder commandText, DbModificationCommandTree tree, DmlSqlGenerator.ExpressionTranslator translator, DbExpression returning, EFOracleProviderManifest providerManifest, EFOracleVersion sqlVersion, bool isUpdate) { if (returning == null) { return; } EntitySetBase target = ((DbScanExpression)tree.Target.Expression).Target; StringBuilder stringBuilder = new StringBuilder(50); stringBuilder.Append("declare\n"); Dictionary <EdmMember, string> dictionary = new Dictionary <EdmMember, string>(); foreach (EdmMember member in target.ElementType.Members) { ReadOnlyMetadataCollection <Facet> facets = ((TypeUsage)member.MetadataProperties["TypeUsage"].Value).Facets; string empty = string.Empty; if (facets.Contains("StoreGeneratedPattern")) { string str = facets["StoreGeneratedPattern"].Value.ToString(); if (!string.IsNullOrEmpty(str)) { if (isUpdate && str.ToUpperInvariant() == "COMPUTED") { dictionary[member] = str; } else if (!isUpdate && (str.ToUpperInvariant() == "COMPUTED" || str.ToUpperInvariant() == "IDENTITY")) { dictionary[member] = str; } } } if (dictionary.ContainsKey(member)) { stringBuilder.Append(DmlSqlGenerator.GenerateMemberTSql(member)); stringBuilder.Append(" "); stringBuilder.Append(SqlGenerator.GetSqlPrimitiveType((DbProviderManifest)providerManifest, sqlVersion, member.TypeUsage)); stringBuilder.Append(";\n"); } } stringBuilder.Append("begin\n"); commandText.Insert(0, stringBuilder.ToString()); OracleParameter parameter = translator.CreateParameter(OracleDbType.RefCursor, ParameterDirection.Output); commandText.Append("returning\n"); string str1 = string.Empty; foreach (EdmMember member in target.ElementType.Members) { if (dictionary.ContainsKey(member)) { commandText.Append(str1); commandText.Append(DmlSqlGenerator.GenerateMemberTSql(member)); str1 = ", "; } } commandText.Append(" into\n"); string str2 = string.Empty; foreach (EdmMember member in target.ElementType.Members) { if (dictionary.ContainsKey(member)) { commandText.Append(str2); commandText.Append(DmlSqlGenerator.GenerateMemberTSql(member)); str2 = ", "; } } commandText.Append(";\n"); commandText.Append("open "); commandText.Append(parameter.ParameterName); commandText.Append(" for select\n"); string str3 = string.Empty; foreach (EdmMember member in target.ElementType.Members) { if (dictionary.ContainsKey(member)) { commandText.Append(str3); commandText.Append(DmlSqlGenerator.GenerateMemberTSql(member)); commandText.Append(" as "); commandText.Append(DmlSqlGenerator.GenerateMemberTSql(member)); str3 = ", "; } } commandText.Append(" from dual;\n"); commandText.Append("end;"); }