Я получаю нулевую ошибку ORA-01407: невозможно обновить ("MGR". "MGR_STRT_CLASSIFICATION". "PRODUCT_ID") значение NULL при обновлении записи с помощью кода с использованием структуры сущностей, но скрипт обновления работает в базе данных нормально.
У меня есть уникальное ограничение на два столбца в таблице, а именно PRODUCT_ID & MANAGERSTRATEGYID
Если я запускаю этот код в базе данных, он работает нормально.Обратите внимание, что я не использовал PRODUCT_ID & MANAGERSTRATEGYID со значениями в таблице, иначе это было бы уникальным нарушением ограничения.
update mgr.MGR_STRT_CLASSIFICATION
set managerstrategyid = 7079,
Legacy_Strategy_ID = 19,
managerstrategy_Type_id = 1
where ID = 760
В своем коде сервера я делаю следующее и получаю ошибку product_id не может быть нулевым
var mgrClassificationService = GetService<MGR_STRT_CLASSIFICATION>();
var isExists = mgrClassificationService.Where(x =>
x.MANAGERSTRATEGYID == model.ManagerStrategyId && x.PRODUCT_ID == model.ProductId).FirstOrDefault();
if (isExists == null)
{
var mgrClassficationOverride = new MGR_STRT_CLASSIFICATION();
if (model != null)
{
mgrClassficationOverride.ID = model.ID;
mgrClassficationOverride.PRODUCT_ID = model.ProductId;
mgrClassficationOverride.LEGACY_STRATEGY_ID = model.LegacyStrategyId;
// mgrClassficationOverride.STRATEGY_ID = model.StrategyId;
mgrClassficationOverride.MANAGERSTRATEGY_TYPE_ID = model.ManagerStrategyTypeId;
mgrClassficationOverride.MANAGERSTRATEGYID = model.ManagerStrategyId;
mgrClassificationService.Update(mgrClassficationOverride);
}
response = Request.CreateResponse(HttpStatusCode.OK, mgrClassficationOverride);
}
else
{
var mgrClassficationOverride = new MGR_STRT_CLASSIFICATION();
if (model != null)
{
mgrClassficationOverride.ID = model.ID;
mgrClassficationOverride.LEGACY_STRATEGY_ID = model.LegacyStrategyId;
mgrClassficationOverride.MANAGERSTRATEGY_TYPE_ID = model.ManagerStrategyTypeId;
//mgrClassficationOverride.PRODUCT_ID = model.ProductId;
//mgrClassficationOverride.MANAGERSTRATEGYID = model.ManagerStrategyId;
mgrClassificationService.Update(mgrClassficationOverride);
}
response = Request.CreateResponse(HttpStatusCode.OK, mgrClassficationOverride);
}
return response;
ViewModel
public class ClassificationItemViewModelCreate
{
public int ID { get; set; }
public int ManagerStrategyId { get; set; }
public int? ProductId { get; set; }
public int? StrategyId { get; set; }
public int? LegacyStrategyId { get; set; }
public int? ManagerStrategyTypeId { get; set; }
}
Сущность
public class MGR_STRT_CLASSIFICATION : Entity, ILegacyStrategy
{
public int MANAGERSTRATEGYID { get; set; }
public int? PRODUCT_ID { get; set; }
public int? STRATEGY_ID { get; set; }
public int? SUB_STRATEGY_ID { get; set; }
public int? SECTOR_FOCUS_ID { get; set; }
public int? REGIONAL_FOCUS_ID { get; set; }
public int? LEGACY_STRATEGY_ID { get; set; }
public int? MANAGERSTRATEGY_TYPE_ID { get; set; }
////public string OVERRIDE_NOTES { get; set; } need to add
[ForeignKey("PRODUCT_ID")]
public V_PRODUCT PRODUCT { get; set; }
[ForeignKey("MANAGERSTRATEGYID")]
public MANAGERSTRATEGY MANAGERSTRATEGY { get; set; }
[ForeignKey("LEGACY_STRATEGY_ID")]
public LEGACY_STRATEGY LEGACYSTRATEGY { get; set; }
public override string ToString() {
return string.Format("MGR_STRT_CLASSIFICATION: ID={0}", this.ID);
}
}