Сохранение настраиваемого поля Entity Framework

Я использую Entity Framework с первым подходом к базе данных.

Я использовал частичные классы для успешного добавления пользовательских методов, но обнаружил, что если я добавляю настраиваемое поле, оно не сохраняется, когда мой объект в следующий раз извлекается из DataContext (тем временем объект не отправляется в базу данных). Мне нужно использовать это поле для обработки, но оно мне не нужно или не нужно, чтобы оно хранилось в моей базе данных.

public partial class MyEntity
{           
    public decimal MyCustomField;
}

Почему это? Как я могу обойти это?

Спасибо


person waxingsatirical    schedule 18.09.2014    source источник
comment
вы сначала используете базу данных, затем обновите базу данных, чтобы добавить столбец alter table add column .. etc, затем перейдите к диаграмме edmx, щелкните правой кнопкой мыши Обновить модель из базы данных   -  person Yuliam Chandra    schedule 18.09.2014
comment
Спасибо за ваш комментарий, хотя я упомянул в своем вопросе, что не хочу хранить это поле в своей базе данных. Так что это не правильный ответ.   -  person waxingsatirical    schedule 18.09.2014
comment
это не ответ, это комментарий, вы не хотите хранить это поле в базе данных, вы уже это сделали, поля не сохраняются в базе данных, только общедоступные свойства (которые отображаются в соответствующем SSDL)   -  person Yuliam Chandra    schedule 18.09.2014
comment
Относительно вашего комментария Значения сохраняются в DataContext до тех пор, пока изменения не будут отправлены в базу данных. Это все, чего я хочу, - это правда, пока сущность не будет перезагружена из базы данных. Тогда ваши несопоставленные модификации свойств будут потеряны и сброшены до значений по умолчанию. Пожалуйста, покажите соответствующий код и поток, чтобы мы могли ответить на ваш актуальный вопрос.   -  person CodeCaster    schedule 18.09.2014
comment
см. stackoverflow.com/questions/14768863/   -  person StefanG    schedule 18.09.2014


Ответы (2)


Одна вещь, которую вы должны иметь в виду, это то, что Entity Framework не хранит значения в себе, она просто генерирует SQL-запросы, используя свои знания базы данных из EDMX. Постоянство фактически реализовано на стороне базы данных.

Да, вы можете добавлять пользовательские методы и свойства в модель с помощью разделяемых классов, но, поскольку вы не создаете столбец базы данных, значения в этих свойствах не будут сохраняться, и, следовательно, поведение, которое вы получаете, совершенно нормально.

Надеюсь, это поможет.

person Amit Mittal    schedule 18.09.2014
comment
Это неправда. EntityFramework сохраняет значения. Значения сохраняются в DataContext до тех пор, пока изменения не будут отправлены в базу данных. Это все настойчивость, которую я хочу. - person waxingsatirical; 18.09.2014
comment
EF не сохраняет никаких значений, однако, если вы вносите изменения в какой-либо объект и хотите получить доступ к этим изменениям в какой-либо другой функции, не отправляя их в базу данных, вам необходимо передать тот же объект этой функции. - person Amit Mittal; 18.09.2014
comment
EF — это всего лишь ORM, поэтому правила объектно-ориентированного программирования также сохраняются и в EF. - person Amit Mittal; 18.09.2014

Попробуйте свойство вместо поля.

public decimal MyCustomField{get; set;}
person Ronak Patel    schedule 18.09.2014