我正在用“数据库优先”方法使用EF5在WPF中编写第一个MVVM应用程序。 我在MVVM中的模型是EF5为我生成的(我确实需要自定义T4模板以包含INotifyPropertyChanged)。用MVVM EF5 SaveChanges
一切似乎工作正常,更改文本框中的文本引发了我的模型中更改属性。 我正在尝试将这些更改保存到数据库。我没有收到任何错误,但没有提交更改。
恐怕,在我的viewmodel中执行context.savechanges()是不够的?
private void UpdatePerson()
{
using (CvContext ctx = new CvContext())
{
ctx.SaveChanges();
}
}
在我的XAML
我:
<UserControl.DataContext>
<myViewModels:PersonDetailViewModel/>
</UserControl.DataContext>
<TextBox Grid.Row="1" Grid.Column="1" x:Name="txtLastName" Text="{Binding Path=Lastname}"></TextBox>
我需要定义插入/更新/删除EDMX设计师,或者这是不是真的有必要吗?
在此先感谢您的帮助! 此致敬礼, YK
非常感谢,这是诀窍! – user2135342
如果您的模型直接来自数据库,则不需要手动映射每个属性。您可以将模型附加到数据库的上下文('context.Attach(person)'),然后您需要通过调用以下行'context.Entry(person)= EntryState来告知EF在此模型中发生了什么变化。 Modified'。 –
@Rikkos就像我说的 - 人们用不同的方式实现它。这种做法对我来说完全有效,为了我自己的利益,我总是喜欢确保它的映射,以确保我没有错过任何东西:)。另外,在我的情况下,我不使用模型。生成EF是我的模型。 –