Я недавно начал с Entity Framework для проекта MVC, который я делаю, чтобы овладеть технологиями, и у меня есть несколько вопросов: ..
Первое, что у меня получилось, это мой код для сохранения сущности - это лучший способ ... мне это кажется немного подозрительным ..
public bool SavePrank(PrankDefinition prank)
{
if (prank == null)
throw new ArgumentNullException("prank");
if (prank.ID == 0)
{
DataBase.Pranks.Add(prank);
DataBase.SaveChanges();
}
else
{
DataBase.Pranks.Attach(prank);
DataBase.Entry(prank).State = EntityState.Modified;
DataBase.SaveChanges();
}
return true;
}
Я также получил этот код для получения последней версии сущностей ..
public List<PrankDefinition> GetPranks()
{
List<PrankDefinition> pranks = DataBase.Pranks.Where(p => p != null).ToList();
foreach (PrankDefinition prankDef in pranks)
{
DataBase.Entry(prankDef).Reload();
}
return pranks;
}
причина, по которой мне пришлось вызывать .reload для объекта, заключается в том, что когда другой клиент использует проект - изменения в объекте не отражаются мгновенно (что очень важно). Мой вопрос для этого - есть ли лучший способ сделать это? Есть ли что-то, что я могу прикрепить к методу Where, чтобы получить последние версии?
мой контекст - если это поможет ..
public static DataContext DataBase
{
get
{
if (HttpContext.Current != null && HttpContext.Current.Session["DataBase"]== null)
{
HttpContext.Current.Session["DataBase"] = new DataContext();
}
return HttpContext.Current.Session["DataBase"] as DataContext;
}
set
{
if (HttpContext.Current != null)
HttpContext.Current.Session["DataBase"] = value;
}
}
любая помощь будет фантастической!
РЕДАКТИРОВАТЬ: ОБНОВЛЕНИЕ ДО КОНТЕКСТА ДАННЫХ
Будет ли это лучшей реализацией DataContext?
public static DataContext DataBase
{
get { return new DataContext(); }
}
ура.
Ste.