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 не запазва никакви стойности, но ако направите промени в който и да е обект и искате да получите достъп до тези промени в друга функция, без да ги изпращате в db, трябва да предадете същия обект на тази функция. - 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