1
DbSet <> .Local에서 반환 한 ObservableCollection에 바인딩 된 DataGrid가있는 WPF MVVM 응용 프로그램이 있습니다. 그리드는 데이터베이스의 내용을 올바르게 표시하고 그리드를 변경하면 ObservableCollection이 변경되지만 데이터베이스에는 변경 사항이 다시 저장되지 않습니다.DbSet <>. ObservableCollection이 EF 컨텍스트 데이터베이스에 저장되지 않음
Context.cs
public class AppContext: DbContext
{
public AppContext() : base("name=DefaultConnection")
{
}
public DbSet<Field> Fields { get; set; }
}
ViewModel.cs 내가 ObservableCollection에 변경 사항이 자동으로 데이터베이스에 쓸 것이라고 생각했다
public class EditorViewModel : NotificationObject
{
private ObservableCollection<MyEntity> _myEntities;
private string _message;
public EditorViewModel()
{
var db = new AppContext();
db.MyEntities.Load();
this.MyEntities = db.MyEntities.Local;
}
public ObservableCollection<MyEntity> MyEntities
{
get
{
return _myEntities;
}
set
{
if (_myEntities != value)
{
_myEntities = value;
RaisePropertyChanged("MyEntities");
}
}
}
}
? 아니면 SaveChanges를 어딘가에 호출해야합니까?
슬픈 당신에게 알려주지 만 프로그래밍은 마술을 포함하지 않습니다. 개체의 상태를 추적하고 사용자가 변경했는지 확인한 다음 변경 내용을 저장하지 않고 저장할지 여부를 결정한 다음 데이터베이스에 다시 써야합니다. 아무도 당신을 위해 그렇게하지 않을 것입니다. – Will
@Will : "충분히 고급 기술은 마법과 구별 할 수 없습니다." EF 실체를 뒷받침하는 첨단 기술이 처음 만났을 때 할 수있는 일과 할 수없는 일을 해결하는 것은 분명 까다로울 수 있습니다. 아마도 이것은 당신이 얻을 수있는 마법이 필요하다고 제안하는 것들 중 일부를 수행한다는 사실에 의해 잘 설명 될 것입니다 ... –