Пытаюсь решить простую задачу - нужно в скрипте "обнулить" значение поля справочника. Поле не обязательное для заполнения, значение отличное от null в него записать удается, а вот как стереть из него все?
.Set("CurrentRoutePointId", Column.Parameter(DBNull.Value))
.Where("IsLast").IsNotEqual(Column.Parameter(1))
.And("ConsignmentId").IsEqual(Column.Parameter(CurrentConsignmentId));
update.Execute();
В примере это поле CurrentRoutePointId.
Через entity также установить null не удается
var entitySchemaQuery = new EntitySchemaQuery(entitySchemaManager, "ConsignmentCargo");
entitySchemaQuery.AddColumn("CurrentRoutePoint");
entitySchemaQuery.Filters.Add(entitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Consignment", CurrentConsignmentId));
entitySchemaQuery.Filters.Add(entitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.NotEqual, "IsLast", 1));
var entities = entitySchemaQuery.GetEntityCollection(UserConnection);
foreach (var entity in entities) {
entity.SetColumnValue("CurrentRoutePointId", Column.Parameter(Guid.Empty));
entity.Save();
}
Нравится
Александр, попробуйте так
[csharp]
Column.Parameter(null, "Guid")
[/csharp]
Думаю, такие примеры тоже пригодятся
[csharp]
var dbNull = DataTypeUtilities.ValueAsType(DBNull.Value);
Assert.AreEqual(Guid.Empty, dbNull);
var dbNull = DataTypeUtilities.ValueAsType(null);
Assert.AreEqual(Guid.Empty, dbNull);
var dbNull = DataTypeUtilities.ValueAsType(DBNull.Value);
Assert.AreEqual(DateTime.MinValue, dbNull);
var dbNull = DataTypeUtilities.ValueAsType(null);
Assert.AreEqual(DateTime.MinValue, dbNull);
[/csharp]
"Раловец Ольга" написал:Александр, попробуйте так
Column.Parameter(null, "Guid")
Сработало, спасибо!
"Александр Кудряшов" написал:
[csharp]
.Where("IsLast").IsNotEqual(Column.Parameter(1))
[/csharp]
Александр, такой код не переносим на Oracle. К сожалению, или к с частью :), mssql очень много "додумывает" за разработчика и неявно приводит типы данных. Но Oracle не сможет интерпретировать 1 как true. Поэтому лучше написать:
[csharp]
.Where("IsLast").IsNotEqual(Column.Parameter(true, "Boolean"))
[/csharp]