无法将模型保存回数据库

拿破仑

我正在RazorPage中为我的Project模型进行简单的编辑操作。我可以读取数据并编辑模型中的数据,但是无法将其保存回数据库中。

就像公共绑定的Project变量突然不再链接到数据库上下文一样。在OnPost()中,绑定的Project变量似乎不再与项目变量相同await _context.Project.FirstAsync(p => p.Id == project.Id);吗?

码:

     public class EditProjectModel : PageModel
        {
            [BindProperty]
            public Project Project { get; set; }
    
            ...
    
            private async Task SaveProjectChanges(Project project) // How to save this parameter back into the database?
            {
                Project dbProject = await _context.Project.FirstAsync(p => p.Id == project.Id);
                // How to save the changes from project?
                // I don't want to assign each property manually like so: dbProject.Name = project.Name
                // dbProject = project; // Erm yeah... This is obviously pointless unless I can use a pointer or something... But there's got to be a better way.
                await _context.SaveChangesAsync();
            }
    
            public async Task<IActionResult> OnPost()
            {
                if (Project.Id > 0)
                {
                    await SaveProjectChanges(Project);
                }
                else
                {
                    await AddNewProject(Project);
                }
    
                return RedirectToPage(<snip>);
            }

从视图中摘录是否重要:

    <tr>
        <td>Id</td>
        <td>@Model.Project.Id<input type="hidden" name="Project.Id" value="@(Model.Project.Id)" /></td>
    </tr>
    <tr>
        <td>Name</td>
        <td><input type="text" name="Project.Name" value="@(Model.Project.Name)" /></td>
    </tr>

    ...

    <input type="submit" value="Save" class="btn btn-default" />
普拉门·约达诺夫(Plamen Yordanov)

调用SaveProjectChanges(Project project)方法时,您会将模型作为输入参数进行传递,但在内部却没有使用它。您说对了,因为要提取的对象与Project dbProject = await _context.Project.FirstAsync(p => p.Id == project.Id);输入参数不同,它是另一个实例。

为了更新数据库记录,您需要将Update()DbContext方法用作_context.Update(project);-官方文档

因此,您的SaveProjectChanges方法应该最终看起来像这样:

private async Task SaveProjectChanges(Project project)
{
    _context.Update(project);
    await _context.SaveChangesAsync();
}

注意:由于Project输入参数处于“已断开”状态,因此请确保已设置其数据库关键字字段,否则最终将在数据库中显示一条新记录,而不是更新现有记录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django模型无法实时将数据持久保存到数据库

来自分类Dev

将模型数据保存到数据库

来自分类Dev

将模型数据保存到数据库

来自分类Dev

使用DataGridView事件将数据保存回数据库

来自分类Dev

将新输入的数据保存回数据库

来自分类Dev

Yii2将模型保存到数据库

来自分类Dev

Django将json值保存到数据库/模型

来自分类Dev

laravel-将新模型保存到数据库

来自分类Dev

Yii2将模型保存到数据库

来自分类Dev

将 keras 模型保存到数据库

来自分类Dev

CakePHP无法将数据保存到数据库

来自分类Dev

无法将数据保存到 Firebase 数据库

来自分类Dev

无法将模型添加到mongo数据库。

来自分类Dev

Rails 4:无法将记录保存到数据库

来自分类Dev

无法将图片保存在数据库中

来自分类Dev

无法将信息保存到数据库列

来自分类Dev

无法将图片保存在数据库中

来自分类Dev

无法使用 django 将图像保存到数据库

来自分类Dev

Grails 4.0 无法将域保存到数据库

来自分类Dev

无法删除数据网格行并将剩余的行保存回数据库中

来自分类Dev

将数据保存到数据库

来自分类Dev

将数据保存到数据库

来自分类Dev

无法将模型表单数据保存在数据库中。给出Patientmedinfo.errors =无和Patientmedinfo.is_valid()= false

来自分类Dev

无法将“用户”数据模型添加到数据库

来自分类Dev

如何将json模型对象保存到php mysql数据库

来自分类Dev

将字段添加到Rails模型而不将其保存在Rails的数据库中

来自分类Dev

Rails,country_select,将国家/地区名称保存到模型数据库

来自分类Dev

Sails.js-如何仅将模型的字段保存到数据库中?

来自分类Dev

Django:将具有ForeignKey关系的模型实例保存到数据库的问题

Related 相关文章

热门标签

归档