Список bools всегда возвращает false - PullRequest
0 голосов
/ 07 июля 2019

При попытке получить список bools для сопоставления с моими свойствами, список всегда возвращает false для всех элементов, даже если некоторые из них верны. В SQL db эти столбцы настроены как битовые, в моем коде это booleans.

Когда я запускаю свой запрос непосредственно в SQL, я получаю желаемые результаты, но отлаживая тот же запрос в VS и просматривая выходные данные, возвращаемые значения остаются ложными. Я вручную выполнил запрос на обновление в БД, чтобы убедиться, что некоторые значения верны, но они все равно возвращают ложь В методе, который я уже пытался очистить список перед его заполнением, но это не помогает.

DataAccess с использованием Dapper:

    public List<PromoLinesBPConditions> GetBlankPaperConditions()
    {
    using (IDbConnection connection = new 
    System.Data.SqlClient.SqlConnection(Helper.CnnVal(_dbNameEng)))
    {
    var output = connection.Query<PromoLinesBPConditions>($"SELECT 
    Invoice_Promo, CopyInvoice_Promo, Folio_Promo, ConfLetter_Promo, 
    BQTOffer_Promo, BQTPO_Promo, Reminder_Promo, ProForma_Promo, 
    Message_Promo from RPTSET_Invoice_Parameters").ToList();
    return output;
    }
    }

Класс PromoLinesBPConditions:

public class PromoLinesBPConditions
{
    public bool OnBPInvoice { get; set; } 
    public bool OnBPCopyInvoice { get; set; }
    public bool OnBPFolio { get; set; }
    public bool OnBPConfLetter { get; set; }
    public bool OnBPBQTOffer { get; set; }
    public bool OnBPBQTPO { get; set; }
    public bool OnBPReminder { get; set; }
    public bool OnBPProForma { get; set; }
    public bool OnBPMessage { get; set; }
}

В DetailViewModel:

    private void GetBlankPaperConditions()
    {
        BlankPaperConditions = _dataService.GetBlankPaperConditions();
        foreach (var item in BlankPaperConditions)
        {
            OnBPInvoice = item.OnBPInvoice;
            OnBPCopyInvoice = item.OnBPCopyInvoice;
            OnBPFolio = item.OnBPFolio;
            OnBPConfLetter = item.OnBPConfLetter;
            OnBPBQTOffer = item.OnBPBQTOffer;
            OnBPBQTPO = item.OnBPBQTPO;
            OnBPReminder = item.OnBPReminder;
            OnBPProForma = item.OnBPProForma;
            OnBPMessage = item.OnBPMessage;
        }
    }

В базе данных OnBPInvoice (Invoice_Promo column) и OnBPCopyInvoice (CopyInvoice column) имеют значение true. Я хочу получить верные результаты.

1 Ответ

3 голосов
/ 07 июля 2019

Dapper предоставляет готовое отображение, как EF (с [Column ("MyColumnName")]

Это означает, что свойства класса должны быть точно , как они написаны вDB

Это означает, что Invoice_Promo (как в вашем операторе SELECT ) должно иметь имя

public bool Invoice_Promo{ get; set; }

Если вы хотитечтобы создать свой собственный маппер и использовать его следующим образом

     public class MyMapper : EntityMap<MyClassName>
     {
         public MyMapper()
         {
             Map(i => i.MyPropery).ToColumn("MyCustomPropery");
         }   

     }

, а затем инициализировать свой маппер

FluentMapper.Initialize(config =>
{
    config.AddMap(new MyMapper());
});

Более подробную информацию вы можете найти здесь

...