Настройте вспомогательное поле другого типа - PullRequest
0 голосов
/ 16 октября 2019
        private int _billAccount;
        public string BillAccount { get
            {
                var account = _billAccount.ToString().PadLeft(9, '0');
                return account.Substring(0, 3) + "-" + account.Substring(3, 3) + "-" + account.Substring(6, 3);
            }
            set
            {
                var account = new string(value.Where(char.IsDigit).ToArray());
                _billAccount = Convert.ToInt32(account);
            }
        }

Свойство BillAccount в классе обрабатывает представление строки как (999-999-999). Столбец в таблице определен как

BillAccount INT NOT NULL

Я пытался использовать

.HasField("_billAccount")
.HasConversion(new NumberToStringConverter<int>())

и любую другую комбинацию, которую я могу придумать, но я просто не могу заставить ее работать.

System.InvalidOperationException: указанное поле '_billAccount' типа 'int' нельзя использовать для свойства 'Lead.BillAccount' типа 'string'. Можно использовать только вспомогательные поля типов, которые можно назначить из типа свойства

Как настроить это в EF Core 3, Fluent API, чтобы поле _billAccount отображалось в столбец таблицы BillAccount,хотя у них разные типы?

1 Ответ

1 голос
/ 16 октября 2019

как @madreflection ссылается на:

public class TheModel {

    private int _billAccount;
    private string _formattedBillAccount = string.Empty;
    public int BillAccount {
        get { return _billAccount; }
        set { 
            _billAccount = value;  
            _formattedBillAccount = value.ToString().PadLeft(9, '0');
            _formattedBillAccount = $"{_formattedBillAccount.Substring(0, 3)}-{_formattedBillAccount.Substring(3, 3)}-{_formattedBillAccount.Substring(6, 3)}";
        }
    }

    [NotMapped]
    public string FormattedBillAccount { get { return _formattedBillAccount; } }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...