diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterBinding.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterBinding.cs
index 91f743798..bd0d826de 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterBinding.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterBinding.cs
@@ -4,10 +4,6 @@
// Created by: Dmitri Maximov
// Created: 2008.09.26
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Xtensive.Core;
using Xtensive.Sql;
using Xtensive.Sql.Dml;
diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterTransmissionType.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterTransmissionType.cs
index 01aaf4ff6..0e79fc7cc 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterTransmissionType.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/ParameterTransmissionType.cs
@@ -12,7 +12,7 @@ namespace Xtensive.Orm.Providers
/// Possible way of delivering parameter to server
/// for and .
///
- public enum ParameterTransmissionType
+ public enum ParameterTransmissionType : byte
{
///
/// Indicates that no special handling of parameter is performed.
@@ -27,4 +27,4 @@ public enum ParameterTransmissionType
///
BinaryLob = 2,
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBinding.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBinding.cs
index 60032d0de..ebf3ef391 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBinding.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBinding.cs
@@ -4,57 +4,39 @@
// Created by: Dmitri Maximov
// Created: 2008.09.25
-using System;
-using Xtensive.Core;
using Xtensive.Sql;
-namespace Xtensive.Orm.Providers
+namespace Xtensive.Orm.Providers;
+
+///
+/// A binding of a parameter for .
+///
+public sealed class PersistParameterBinding(
+ TypeMapping typeMapping,
+ ushort rowIndex,
+ ColNum fieldIndex,
+ ParameterTransmissionType transmissionType = ParameterTransmissionType.Regular,
+ PersistParameterBindingType bindingType = PersistParameterBindingType.Regular
+) : ParameterBinding(typeMapping, transmissionType)
{
- ///
- /// A binding of a parameter for .
- ///
- public sealed class PersistParameterBinding : ParameterBinding
- {
- public int RowIndex { get; private set; }
-
- public int FieldIndex { get; private set; }
-
- public PersistParameterBindingType BindingType { get; private set; }
-
- // Constructors
-
- public PersistParameterBinding(TypeMapping typeMapping, int rowIndex, int fieldIndex,
- ParameterTransmissionType transmissionType, PersistParameterBindingType bindingType)
- : base(typeMapping, transmissionType)
- {
- RowIndex = rowIndex;
- FieldIndex = fieldIndex;
- BindingType = bindingType;
- }
-
- public PersistParameterBinding(TypeMapping typeMapping, int fieldIndex, ParameterTransmissionType transmissionType, PersistParameterBindingType bindingType)
- : this(typeMapping, 0, fieldIndex, transmissionType, bindingType)
- {
- }
+ public ushort RowIndex { get; } = rowIndex;
+ public ColNum FieldIndex { get; } = fieldIndex;
+ public PersistParameterBindingType BindingType { get; } = bindingType;
- public PersistParameterBinding(TypeMapping typeMapping, int rowIndex, int fieldIndex, ParameterTransmissionType transmissionType)
- : this(typeMapping, rowIndex, fieldIndex, transmissionType, PersistParameterBindingType.Regular)
- {
- }
+ // Constructors
- public PersistParameterBinding(TypeMapping typeMapping, int fieldIndex, ParameterTransmissionType transmissionType)
- : this(typeMapping, fieldIndex, transmissionType, PersistParameterBindingType.Regular)
- {
- }
+ public PersistParameterBinding(TypeMapping typeMapping, ColNum fieldIndex, ParameterTransmissionType transmissionType, PersistParameterBindingType bindingType)
+ : this(typeMapping, 0, fieldIndex, transmissionType, bindingType)
+ {
+ }
- public PersistParameterBinding(TypeMapping typeMapping, int rowIndex, int fieldIndex)
- : this(typeMapping, rowIndex, fieldIndex, ParameterTransmissionType.Regular, PersistParameterBindingType.Regular)
- {
- }
+ public PersistParameterBinding(TypeMapping typeMapping, ColNum fieldIndex, ParameterTransmissionType transmissionType)
+ : this(typeMapping, fieldIndex, transmissionType, PersistParameterBindingType.Regular)
+ {
+ }
- public PersistParameterBinding(TypeMapping typeMapping, int fieldIndex)
- : this(typeMapping, fieldIndex, ParameterTransmissionType.Regular, PersistParameterBindingType.Regular)
- {
- }
+ public PersistParameterBinding(TypeMapping typeMapping, ColNum fieldIndex)
+ : this(typeMapping, fieldIndex, ParameterTransmissionType.Regular, PersistParameterBindingType.Regular)
+ {
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBindingType.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBindingType.cs
index 8c2ea2b0b..f87709a0b 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBindingType.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistParameterBindingType.cs
@@ -3,7 +3,7 @@ namespace Xtensive.Orm.Providers
///
/// Possible types of .
///
- public enum PersistParameterBindingType
+ public enum PersistParameterBindingType : byte
{
///
/// Regular parameter. Parameter value is obtained thru difference tuple.
@@ -17,4 +17,4 @@ public enum PersistParameterBindingType
///
VersionFilter = 1,
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilder.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilder.cs
index 563352661..255776f57 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilder.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilder.cs
@@ -63,7 +63,7 @@ internal IReadOnlyList Build(StorageNode node, PersistRequestBui
return result.AsSafeWrapper();
}
- protected virtual List BuildInsertRequest(PersistRequestBuilderContext context)
+ protected virtual List BuildInsertRequest(in PersistRequestBuilderContext context)
{
var result = new List();
foreach (var index in context.AffectedIndexes) {
@@ -88,7 +88,7 @@ protected virtual List BuildInsertRequest(PersistRequestBuilderC
return result;
}
- protected virtual List BuildUpdateRequest(PersistRequestBuilderContext context)
+ protected virtual List BuildUpdateRequest(in PersistRequestBuilderContext context)
{
var result = new List();
foreach (var index in context.AffectedIndexes) {
@@ -130,7 +130,7 @@ protected virtual List BuildUpdateRequest(PersistRequestBuilderC
return result;
}
- protected virtual List BuildRemoveRequest(PersistRequestBuilderContext context)
+ protected virtual List BuildRemoveRequest(in PersistRequestBuilderContext context)
{
var result = new List();
for (var i = context.AffectedIndexes.Count - 1; i >= 0; i--) {
@@ -147,7 +147,7 @@ protected virtual List BuildRemoveRequest(PersistRequestBuilderC
return result;
}
- private SqlExpression BuildKeyFilter(PersistRequestBuilderContext context, SqlTableRef filteredTable, List currentBindings)
+ private SqlExpression BuildKeyFilter(in PersistRequestBuilderContext context, SqlTableRef filteredTable, List currentBindings)
{
SqlExpression result = null;
foreach (var column in context.PrimaryIndex.KeyColumns.Keys) {
@@ -163,7 +163,7 @@ private SqlExpression BuildKeyFilter(PersistRequestBuilderContext context, SqlTa
return result;
}
- private SqlExpression BuildVersionFilter(PersistRequestBuilderContext context, SqlTableRef filteredTable, List currentBindings)
+ private SqlExpression BuildVersionFilter(in PersistRequestBuilderContext context, SqlTableRef filteredTable, List currentBindings)
{
SqlExpression result = null;
foreach (var column in context.Type.GetVersionColumns()) {
@@ -193,7 +193,7 @@ private SqlExpression BuildVersionFilter(PersistRequestBuilderContext context, S
return result;
}
- private bool AddFakeVersionColumnUpdate(PersistRequestBuilderContext context, SqlUpdate update, SqlTableRef filteredTable)
+ private bool AddFakeVersionColumnUpdate(in PersistRequestBuilderContext context, SqlUpdate update, SqlTableRef filteredTable)
{
foreach (var column in context.Type.GetVersionColumns()) {
var columnExpression = filteredTable[column.Name];
@@ -210,7 +210,7 @@ private bool AddFakeVersionColumnUpdate(PersistRequestBuilderContext context, Sq
return false;
}
- private PersistParameterBinding GetBinding(PersistRequestBuilderContext context, ColumnInfo column, Table table, int fieldIndex)
+ private PersistParameterBinding GetBinding(PersistRequestBuilderContext context, ColumnInfo column, Table table, ColNum fieldIndex)
{
if (!context.ParameterBindings.TryGetValue(column, out var binding)) {
var typeMapping = driver.GetTypeMapping(column);
@@ -236,15 +236,10 @@ private ParameterTransmissionType GetTransmissionType(TableColumn column)
: ParameterTransmissionType.Regular;
}
- private static int GetFieldIndex(TypeInfo type, ColumnInfo column)
- {
- if (!type.Fields.TryGetValue(column.Field.Name, out var field)
- || field.Column == null
- || field.Column.ValueType != column.ValueType) {
- return -1;
- }
- return field.MappingInfo.Offset;
- }
+ private static ColNum GetFieldIndex(TypeInfo type, ColumnInfo column) =>
+ type.Fields.TryGetValue(column.Field.Name, out var field) && field.Column?.ValueType == column.ValueType
+ ? field.MappingInfo.Offset
+ : (ColNum)(-1);
///
protected override void Initialize()
@@ -263,4 +258,4 @@ public PersistRequestBuilder()
{
}
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilderContext.cs b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilderContext.cs
index 4b67d9fbb..b25e3d045 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilderContext.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/Requests/PersistRequestBuilderContext.cs
@@ -4,9 +4,6 @@
// Created by: Dmitri Maximov
// Created: 2008.08.29
-using System.Collections.Generic;
-using System.Linq;
-using Xtensive.Collections;
using Xtensive.Core;
using Xtensive.Orm.Configuration;
using Xtensive.Orm.Model;
@@ -16,23 +13,23 @@ namespace Xtensive.Orm.Providers
///
/// context.
///
- public sealed class PersistRequestBuilderContext
+ public readonly struct PersistRequestBuilderContext
{
- public PersistRequestBuilderTask Task { get; private set; }
+ public PersistRequestBuilderTask Task { get; }
- public ModelMapping Mapping { get; private set; }
+ public ModelMapping Mapping { get; }
- public NodeConfiguration NodeConfiguration { get; private set; }
+ public NodeConfiguration NodeConfiguration { get; }
- public TypeInfo Type { get; private set; }
+ public TypeInfo Type { get; }
- public IReadOnlyList AffectedIndexes { get; private set;}
+ public IReadOnlyList AffectedIndexes { get; }
- public IndexInfo PrimaryIndex { get; private set; }
+ public IndexInfo PrimaryIndex { get; }
- public Dictionary ParameterBindings { get; private set; }
+ public Dictionary ParameterBindings { get; }
- public Dictionary VersionParameterBindings { get; private set; }
+ public Dictionary VersionParameterBindings { get; }
// Constructors
@@ -60,4 +57,4 @@ public PersistRequestBuilderContext(PersistRequestBuilderTask task, ModelMapping
VersionParameterBindings = new Dictionary();
}
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Providers/TemporaryTables/TemporaryTableManager.cs b/Orm/Xtensive.Orm/Orm/Providers/TemporaryTables/TemporaryTableManager.cs
index 628808a63..7d5199e8d 100644
--- a/Orm/Xtensive.Orm/Orm/Providers/TemporaryTables/TemporaryTableManager.cs
+++ b/Orm/Xtensive.Orm/Orm/Providers/TemporaryTables/TemporaryTableManager.cs
@@ -106,7 +106,7 @@ public TemporaryTableDescriptor BuildDescriptor(ModelMapping modelMapping, strin
return result;
- Lazy CreateLazyPersistRequest(int batchSize)
+ Lazy CreateLazyPersistRequest(ushort batchSize)
{
return new Lazy(() => {
var bindings = new List(batchSize);
@@ -214,7 +214,7 @@ private SqlSelect MakeUpSelectQuery(SqlTableRef temporaryTable, bool hasColumns)
}
private SqlInsert MakeUpInsertQuery(SqlTableRef temporaryTable,
- TypeMapping[] typeMappings, List storeRequestBindings, bool hasColumns, int rows = 1)
+ TypeMapping[] typeMappings, List storeRequestBindings, bool hasColumns, ushort rows = 1)
{
var insertStatement = SqlDml.Insert(temporaryTable);
if (!hasColumns) {
@@ -222,8 +222,8 @@ private SqlInsert MakeUpInsertQuery(SqlTableRef temporaryTable,
return insertStatement;
}
- for (var rowIndex = 0; rowIndex < rows; ++rowIndex) {
- var fieldIndex = 0;
+ for (ushort rowIndex = 0; rowIndex < rows; ++rowIndex) {
+ ColNum fieldIndex = 0;
var row = new Dictionary(temporaryTable.Columns.Count);
foreach (var column in temporaryTable.Columns) {
var typeMapping = typeMappings[fieldIndex];
@@ -249,4 +249,4 @@ protected override void Initialize()
backEnd = new EmulatedTemporaryTableBackEnd();
}
}
-}
\ No newline at end of file
+}
diff --git a/Orm/Xtensive.Orm/Orm/Upgrade/Internals/Metadata/MetadataWriter.cs b/Orm/Xtensive.Orm/Orm/Upgrade/Internals/Metadata/MetadataWriter.cs
index c47e407c5..016ed510c 100644
--- a/Orm/Xtensive.Orm/Orm/Upgrade/Internals/Metadata/MetadataWriter.cs
+++ b/Orm/Xtensive.Orm/Orm/Upgrade/Internals/Metadata/MetadataWriter.cs
@@ -111,7 +111,7 @@ private IPersistDescriptor CreateDescriptor(string tableName,
var insert = SqlDml.Insert(tableRef);
var bindings = new PersistParameterBinding[columns.Count];
var row = new Dictionary(columns.Count);
- for (int i = 0; i < columns.Count; i++) {
+ for (ColNum i = 0; i < columns.Count; i++) {
var binding = new PersistParameterBinding(mappings[i], i, transmissionTypes[i]);
row.Add(tableRef.Columns[i], binding.ParameterReference);
bindings[i] = binding;