Нулевая ошибка при обновлении кода со стороны сервера в c # - PullRequest
0 голосов
/ 16 мая 2019

Я получаю нулевую ошибку 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...