Невозможно преобразовать одну модель в другую - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь сохранить в две разные таблицы.Беря данные из Taxlaw и сохраняя их, я сохраняю те же данные в таблице taxlavistory.Так что это похоже на копирование данных из одной таблицы в другую, и это не работает.Ошибка, которую я продолжаю получать:

Не удается преобразовать из Model.TaxLaw в Model.TaxTableHisory

public  async Task<bool> SaveOrUpdate(IEnumerable<TaxLaw> obj)
        {


            using (var trans = _taxhistoryrepo.DbContext.Database.BeginTransaction())
            {
              var lists = new List<TaxTableHistory>();

                foreach (var list in obj)
                {

                        lists.CompanyCode = list.CompanyCode;
                        lists.CummulativeAmount = list.CummulativeAmount;
                        lists.Percentage = list.Percentage;
                        lists.ModifiedDate = DateTime.UtcNow;
                        lists.ModifiedDate = list.ModifiedDate;
                        lists.Status = EntityStatus.Active;

                        _taxhistoryrepo.DbSetEntity.Add(lists);

                        await  _taxhistoryrepo.DbContext.SaveChangesAsync();
                        await  Task.FromResult(_repository.SingleSave(obj));

                 }
                trans.Commit();
            }
            return true;

        }

Ответы [ 4 ]

0 голосов
/ 06 декабря 2018

Вы пытались добавить объект Model.TaxLaw в репозиторий TaxTableHisory, поскольку obj - это IEnumerable of TaxLaw.

foreach (var list in obj)
_taxhistoryrepo.DbSetEntity.Add(list);

Вам нужно создать новый объект типа TaxTableHisory и добавить этот объект

public async Task<bool> SaveOrUpdate(IEnumerable<TaxLaw> taxLawList)
    {
        using (var trans = _taxhistoryrepo.DbContext.Database.BeginTransaction())
        {
            foreach (var taxLaw in taxLawList)
            {
                var taxTableHisory = new TaxTableHisory();
                taxTableHisory.CompanyCode = taxLaw.CompanyCode;
                taxTableHisory.CummulativeAmount = taxLaw.CummulativeAmount;
                taxTableHisory.Percentage = taxLaw.Percentage;
                taxTableHisory.ModifiedDate = taxLaw.ModifiedDate;
                taxTableHisory.Status = EntityStatus.Active;

                _taxhistoryrepo.DbSetEntity.Add(taxTableHisory);
                await _taxhistoryrepo.DbContext.SaveChangesAsync();
            }
            trans.Commit();
        }
        return true;
    }

Ps: возможно taxTableHisory - ошибка типа taxTableHistory

0 голосов
/ 06 декабря 2018

obj имеет тип

IEnumerable<TaxLaw>

, поэтому каждый итеам равен

TaxLaw

Затем вы пытаетесь сохранить в

_taxhistoryrepo 

, который, по моему мнению, использует

TaxHistory 

Эта часть кода:

 foreach (var list in obj)
 {
   list.CompanyCode = list.CompanyCode;
   list.CummulativeAmount = list.CummulativeAmount;
   list.Percentage = list.Percentage;
   list.ModifiedDate = DateTime.UtcNow;
   list.ModifiedDate = list.ModifiedDate;
   list.Status = EntityStatus.Active;

   _taxhistoryrepo.DbSetEntity.Add(list);

   await  _taxhistoryrepo.DbContext.SaveChangesAsync();
   await  Task.FromResult(_repository.SingleSave(obj));
  }

Итерация через obj, поэтому "список" - это TaxLaw, но здесь:

_taxhistoryrepo.DbContext.SaveChangesAsync()

Вы добавляете тип TaxLaw вТаблица TaxHistory

Я также считаю, что это опечатка, которую вы делаете

list.CompanyCode = list.CompanyCode;
...

, которая в основном устанавливает ту же самую переменную с той же переменной

Чего, я полагаю, вы хотели достичьэто:

 public  async Task<bool> SaveOrUpdate(IEnumerable<TaxLaw> obj)
    {
        using (var trans = _taxhistoryrepo.DbContext.Database.BeginTransaction())
        {
          var lists = new List<TaxTableHistory>();

            foreach (var list in obj)
            {
                    var taxHistory = new TaxHistory();
                    taxHistory.CompanyCode = list.CompanyCode;
                    taxHistory.CummulativeAmount = list.CummulativeAmount;
                    taxHistory.Percentage = list.Percentage;
                    taxHistory.ModifiedDate = DateTime.UtcNow;
                    taxHistory.ModifiedDate = list.ModifiedDate;
                    taxHistory.Status = EntityStatus.Active;
                    //manually mapped TaxLaw into TaxHistory

                _taxhistoryrepo.DbSetEntity.Add(taxHistory); // save TaxHistory

              await  _taxhistoryrepo.DbContext.SaveChangesAsync();
               await  Task.FromResult(_repository.SingleSave(list)); //here save "list" not obj as you would save whole collection each iteration of the loop

             }
            trans.Commit();
        }
        return true;

    }
0 голосов
/ 06 декабря 2018

Хотя следующий код может решить вашу проблему, вы можете использовать AutoMapper для сопоставления одного объекта другому.

public  async Task<bool> SaveOrUpdate(IEnumerable<TaxLaw> obj)
    {
        using (var trans = _taxhistoryrepo.DbContext.Database.BeginTransaction())
        {
            foreach (var list in obj)
            {
                _taxhistoryrepo.DbSetEntity.Add(new TaxTableHistory {
                    CompanyCode = list.CompanyCode,
                    CummulativeAmount = list.CummulativeAmount,
                    Percentage = list.Percentage,
                    ModifiedDate = DateTime.UtcNow,
                    ModifiedDate = list.ModifiedDate,
                    Status = EntityStatus.Active
            });

            await  _taxhistoryrepo.DbContext.SaveChangesAsync();
            await  Task.FromResult(_repository.SingleSave(obj));
         }
         trans.Commit();
        }
        return true;
    }
0 голосов
/ 06 декабря 2018

Попробуйте:

public  async Task<bool> SaveOrUpdate(IEnumerable<TaxLaw> obj)
{
    using (var trans = _taxhistoryrepo.DbContext.Database.BeginTransaction())
    {
        // var lists = new List<TaxTableHistory>();

        foreach (var taxLaw in obj)
        {
                var taxTableHistory = new TaxTableHistory();
                taxTableHistory.CompanyCode = taxLaw.CompanyCode;
                taxTableHistory.CummulativeAmount = taxLaw.CummulativeAmount;
                taxTableHistory.Percentage = taxLaw.Percentage;
                taxTableHistory.ModifiedDate = DateTime.UtcNow;
                taxTableHistory.ModifiedDate = taxLaw.ModifiedDate;
                taxTableHistory.Status = EntityStatus.Active;

            _taxhistoryrepo.DbSetEntity.Add(taxTableHistory);

            await  _taxhistoryrepo.DbContext.SaveChangesAsync();
            await  Task.FromResult(_repository.SingleSave(obj));
         }
        trans.Commit();
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...