EF сохранение свойства вместо базового свойства - PullRequest
0 голосов
/ 17 февраля 2012

Так что у меня есть это свойство в моем частичном классе, переопределяющее свойство моего POCO

    public new double PaidOvertime
    {
        get
        {
            if (!InHoures)
            {
                return Math.Round(base.PaidOvertime/ 7, 2);
            }
            else
            {
                return base.PaidOvertime;
            }
        }
        set
        {
            if (!InHoures)
            {
                base.PaidOvertime = value * 7;
            }
            else
            {
                base.PaidOvertime = Math.Round(value, 2);
            }
            statsChanged();
        }
    }

Дело в том, что когда дело доходит до сохранения, EF сохраняет значение этого свойства.Я хотел бы, чтобы EF сохранил значение базового свойства или закрытой переменной за базовым свойством.

Есть ли обходной путь или что-то, чего мне не хватает?

PS: когда ясказать "сохранение" я имею в виду сохранение в БД

1 Ответ

0 голосов
/ 18 февраля 2012

Я предполагаю, что вы используете какое-то отображение наследования, иначе оно не должно работать вообще.

Как только вы используете new в производном классе, вы говорите .NET, что это реализация, которую вы хотите использовать каждый раз, когда она работает с вашим экземпляром класса. Базовая реализация используется только в том случае, если вы приводите класс к базовому типу и работаете с ним как с базовым типом - вопрос в том, работает ли это с EF.

Просто не делай этого. new Ключевое слово в объявлении метода и свойства - это то, что вы должны использовать, только если у вас есть контроль над всем кодом, использующим ваш объект. В противном случае вы никогда не знаете, какая реализация будет вызвана. EF не твой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...