ADO.Net Обновление EntityFramework - PullRequest
1 голос
/ 05 июля 2011

я впервые использую EntityFramework и по какой-то причине я не могу получить объект для обновления ...

Вот вам

public static class EmployeeRepository
{
    public static List<employee> Select(int start = 0, int limit = 10)
    {
        using (var db = new MySqlEntities())
            return (from t in db.employees orderby t.ID select t).Skip(start).Take(limit).ToList();
    }

    public static List<employee> Search(string query, int limit = 10)
    {
        using (var db = new MySqlEntities())
            return (from t in db.employees where t.Name.StartsWith(query) || t.Username.StartsWith(query) select t).Take(limit).ToList();
    }

    public static void Update(employee Employee)
    {
        using(var db = new MySqlEntities())
        {
            db.employees.Attach(Employee);
            /* 
               Edit:
               also tried adding (line below) here
               db.ApplyCurrentValues<employee>(db.employees.EntitySet.Name, Employee);
            */
            db.SaveChanges();
        }
    }
}

Я использую класс репозитория вот так ...

employee emp = EmployeeRepository.Select().FirstOrDefault();
emp.Username = "Imran";
EmployeeRepository.Update(emp);

1 Ответ

2 голосов
/ 05 июля 2011

Удалось найти ответ ... Когда отдельная сущность присоединяется к новому контексту, EntityState устанавливается на unchaged, поэтому мы должны изменить его на модифицированный перед вызовом метода SaveChanges () в контексте.

public static void Update(employee Employee)
{
    using(var db = new MySqlEntities())
    {
        db.employees.Attach(Employee);
        db.employees.Context.ObjectStateManager.ChangeObjectState(Employee, System.Data.EntityState.Modified);
        db.SaveChanges();
    }
}

Полезные ссылки ..

обновление отключенного объекта в рамках сущности

http://blogs.msdn.com/b/dsimmons/archive/2009/11/09/attachasmodified-revisited.aspx

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