You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC分层架构数据插入无报错但失败求助

问题排查:ASP.NET Core MVC PostgreSQL插入无报错但失败

我正在开发采用PostgreSQL数据库的ASP.NET Core MVC(N层架构)项目,目前可正常从表中查询数据,但执行插入操作时无任何报错却失败,尝试AJAX方式也未在日志中发现错误,请求协助排查。

控制器代码

[HttpGet]
public IActionResult AddTask()
{
    return View();
}

[HttpPost]
public IActionResult AddTask(TaskList taskList)
{
    taskList.CreateDate = DateTime.Now;
    taskList.FinishDate = DateTime.Now;
    taskList.CreateUser = 1;
    taskList.Status = false;
    //taskList.Priority = 1;
    taskListManager.itemAdd(taskList);
    return RedirectToAction("Home/Index");
}

视图代码

@using EntityLayer.Concrete;

@model List<TaskList>

<form method="post">
    <div class="card">
        <div class="card-body">
            <div style="text-align:right">
                <button class="btn btn-primary" id="btnNewTask" type="button">Yeni Görev Oluştur</button>
            </div>

            <div class="card-body p-4">
                <h5 class="card-title fw-semibold mb-4">Bekleyen İşlerim</h5>
                <div class="table-responsive">
                    <table class="table text-nowrap mb-0 align-middle">
                        <thead class="text-dark fs-4">
                            <tr>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Oluşturan Kullanıcı</h6>
                                </th>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Konu Başlığı</h6>
                                </th>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Öncelik</h6>
                                </th>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Oluşturma Tarihi</h6>
                                </th>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Durum</h6>
                                </th>
                                <th class="border-bottom-0">
                                    <h6 class="fw-semibold mb-0">Detay</h6>
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach (var item in Model)
                            {
                                <tr>
                                    <td class="border-bottom-0">
                                        <h6 class="fw-semibold mb-1">@item.CreateUser</h6>
                                        <span class="fw-normal">Kendim</span>
                                    </td>
                                    <td class="border-bottom-0">
                                        <p class="fw-semibold mb-1l">@item.TaskTitle</p>
                                    </td>
                                    <td class="border-bottom-0">
                                        <div class="d-flex align-items-center gap-2">
                                            @if (item.Priority == 1)
                                            {
                                                <span class="badge bg-secondary rounded-3 fw-semibold">Düşük</span>
                                            }
                                            @if (item.Priority == 2)
                                            {
                                                <span class="badge bg-success rounded-3 fw-semibold">Normal</span>
                                            }
                                            @if (item.Priority == 3)
                                            {
                                                <span class="badge bg-danger rounded-3 fw-semibold">Yüksek</span>
                                            }
                                        </div>
                                    </td>
                                    <td class="border-bottom-0">
                                        <h6 class="mb-0 fw-normal">@item.CreateDate</h6>
                                    </td>
                                    <td class="border-bottom-0">
                                        @if (item.Status == false)
                                        {
                                            <span class="badge bg-warning rounded-3 fw-semibold">Bekleniyor</span>
                                        }
                                        @if (item.Status == true)
                                        {
                                            <span class="badge bg-dark rounded-3 fw-semibold">Tamamlandı</span>
                                        }
                                    </td>
                                    <td class="border-bottom-0">
                                        <button class="btn btn-light m-1" id="btnDetay" type="button" href="#">Detaya Git</button>
                                    </td>
                                </tr>
                            }
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>

    <div class="modal" id="myModal">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">Yeni İş Oluştur</h4>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body">
                    <label class="form-label">Konu Başlığı</label>
                    <input class="form-control" id="txtAddTaskTitle" name="TaskTitle" placeholder="Konu Başlığı Giriniz" />
                    <br />
                    <label class="form-label">Açıklama</label>
                    <input class="form-control" id="txtAddTaskDetails" name="TaskDetails" placeholder="Konu İle İlgili Açıklama Giriniz" />
                    <br />
                    <label class="form-label">Öncelik</label>
                    <select class="form-control" name="Priority" id="ddlPriority">
                        <option value="0">Lütfen Öncelik Durumunu Seçiniz</option>
                        <option value="1" class="badge bg-secondary rounded-3 fw-semibold">Düşük</option>
                        <option value="2" class="badge bg-success rounded-3 fw-semibold">Normal</option>
                        <option value="3" class="badge bg-danger rounded-3 fw-semibold">Yüksek</option>
                    </select>
                </div>
                <div class="modal-footer">
                    <button type="submit" class="btn btn-primary m-1" id="btnAddTask">Ekle</button>
                </div>
            </div>
        </div>
    </div>
</form>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"></script>

排查方向

  • 模型验证问题:检查TaskList实体是否有必填字段未赋值,比如Priority默认选中值是0,若实体要求该字段必须为1/2/3,会导致模型验证失败但未处理错误。可在控制器中添加if (!ModelState.IsValid)判断,返回视图并显示错误。
  • 事务未提交:查看taskListManager.itemAdd方法是否开启了事务但未提交,PostgreSQL默认需要显式提交事务(除非使用自动提交模式)。
  • 主键生成策略:确认TaskList表的主键是否设置了正确的生成方式(比如自增序列),若主键未自动生成且未手动赋值,插入会失败但可能无报错。
  • 数据库权限:检查连接数据库的账号是否有插入表的权限,虽然查询正常,但插入权限可能缺失。
  • 日志详细程度:调整日志级别到Debug,查看EF Core生成的SQL语句,直接在PostgreSQL中执行该SQL,确认是否有隐藏错误。
  • 表单提交问题:视图中的表单是否正确绑定模型,比如Priority的name属性是否和实体属性名一致,或者是否有字段未正确提交。可在控制器中打印taskList对象,查看属性值是否为空或不符合要求。

内容的提问来源于stack exchange,提问作者Gökmen Ada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:40:54