У меня есть два класса; Площадь и LanguageArea . Я использую LanguageArea для обработки переведенных областей.
Area.cs
Заголовок строки,
Описание строки,
Картинки (набор класса Picture),
LanguageAreas (набор класса LanguageArea)
LanguageArea.cs
Язык (определяет, на какую языковую область переводится),
Площадь,
Заголовок (перевод заглавия Района),
Описание (переведенное описание для области)
Например, когда переведенная область запрашивается из пользовательского интерфейса, сначала я получаю LanguageArea
public Area GetByLanguageId(long areaId, byte LanguageId)
{
var langArea = db.LanguageArea
.Where(i => i.Area.id == areaId && i.Language.id == LanguageId).FirstOrDefault();
Area newArea = null;
if (langArea != null && langArea.Area != null)
{
newArea = langArea.Area; // I have copied to area to get area with pictures in it
newArea.Title = langArea.Title; // I got the translated Title
newArea.Description = langArea.Description; // I got the translated description
}
return newArea;
}
С помощью метода, описанного выше, я получаю объект всей области с переведенным названием и описанием .
Но переведенный заголовок и описание сохранены в ObjectContext. После этого, когда язык по умолчанию или любой другой язык запрашивал пользовательский интерфейс, он по-прежнему получал переведенный заголовок и описание из ObjectContext, а не данные из БД.
Я пытался MergeOption.OverwriteChanges
. На этот раз все было в порядке, но при сохранении он сохранил переведенную информацию, а не оригинальную, которая находится в БД.
Я пытался Context.Refresh();
, но это выглядит как временное решение.
Что вы порекомендуете для решения этой ситуации?
Спасибо