#entity-framework-4.1 #ef-code-first
#entity-framework-4.1 #ef-code-first
Вопрос:
Следуйте приведенным ниже методам:
public class User
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
}
public class DataContext : DbContext
{
DbSet<User> Users { get; set; }
}
public class Repository
{
DataContext db = new DataContext();
public User Attach1(User entity)
{
var ent = db.Entry<User>(entity);
ent.State = EntityState.Modified;
if (db.SaveChanges() > 0)
return ent.Entity;
return null;
}
public User Attach2(User entity)
{
return db.Users.Attach(entity);
}
}
Есть ли какая-либо разница между Attach1
и Attach2
?
Комментарии:
1. пожалуйста, отправьте код, который компилирует
2. Смотрите еще раз, не ставьте его, потому что код простой.
3. Я имею в виду, что ваши
Attach1
Attach2
методы and синтаксически некорректны / неполны.
Ответ №1:
Ваши Attach1
Attach2
методы и выполняют разные действия, и неясно, что вы ожидаете сделать в этих методах. Когда вы присоединяете объект к EF, он будет добавлен в контекст в Unchanged
состоянии. Если вы измените объект после присоединения, EF будет отслеживать эти изменения, и объект будет в Modified
состоянии.
Attach1
Этот метод присоединит объект и пометит его как измененный. Таким образом, последующий SaveChanges()
обновит все свойства объекта. Вызов SaveChanges()
внутри Attach
метода не рекомендуется, поскольку он выполняет нечто большее, чем присоединение.
Attach2
Этот метод прикрепит объект как Unchanged
.
Комментарии:
1. Цель состоит в том, чтобы обновить объект. Я использую Attach для обновления свойств в базе данных.