Пытаюсь решить простую задачу - нужно в скрипте "обнулить" значение поля справочника. Поле не обязательное для заполнения, значение отличное от null в него записать удается, а вот как стереть из него все?
update = new Update(Page.UserConnection, "ConsignmentCargo")
.Set("CurrentRoutePointId", Column.Parameter(DBNull.Value))
.Where("IsLast").IsNotEqual(Column.Parameter(1))
.And("ConsignmentId").IsEqual(Column.Parameter(CurrentConsignmentId));
update.Execute();
.Set("CurrentRoutePointId", Column.Parameter(DBNull.Value))
.Where("IsLast").IsNotEqual(Column.Parameter(1))
.And("ConsignmentId").IsEqual(Column.Parameter(CurrentConsignmentId));
update.Execute();
В примере это поле CurrentRoutePointId.
Через entity также установить null не удается
var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as Terrasoft.Core.Entities.EntitySchemaManager;
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();
}
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();
}
Нравится
4 комментария
27 декабря 2012 09:44
Александр, попробуйте так
Column.Parameter(null, "Guid")
27 декабря 2012 09:50
Думаю, такие примеры тоже пригодятся
var dbNull = DataTypeUtilities.ValueAsType<Guid>(DBNull.Value); Assert.AreEqual(Guid.Empty, dbNull); var dbNull = DataTypeUtilities.ValueAsType<Guid>(null); Assert.AreEqual(Guid.Empty, dbNull); var dbNull = DataTypeUtilities.ValueAsType<DateTime>(DBNull.Value); Assert.AreEqual(DateTime.MinValue, dbNull); var dbNull = DataTypeUtilities.ValueAsType<DateTime>(null); Assert.AreEqual(DateTime.MinValue, dbNull);
27 декабря 2012 10:10
"Раловец Ольга" написал:Александр, попробуйте так
Column.Parameter(null, "Guid")
Сработало, спасибо!
27 декабря 2012 13:33
"Александр Кудряшов" написал:.Where("IsLast").IsNotEqual(Column.Parameter(1))
Александр, такой код не переносим на Oracle. К сожалению, или к с частью :), mssql очень много "додумывает" за разработчика и неявно приводит типы данных. Но Oracle не сможет интерпретировать 1 как true. Поэтому лучше написать:
.Where("IsLast").IsNotEqual(Column.Parameter(true, "Boolean"))
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать