【问题标题】:Model does not update after manual DB deletion手动删除数据库后模型不更新
【发布时间】:2018-08-29 12:49:05
【问题描述】:

我的客户经理是这样的。

            AccountManagers =
                p.SuperUserAccessPermissions
                .AsQueryable()
                .Where(a => a.IsDeleted == false)
                .Select(SuperUserAccessPermissionViewModel)
                .ToList()

注意a.IsDeleted == false

但是,当我从我的数据库中手动删除它并尝试在这样的视图中显示它时:

        @foreach (var item in Model.AccountManagers)
        {
            <tr>
                <td>@item.FullName</td>
                <td class="w1">
                    <a class="btn btn-sm btn-default"
                       href="@Url.Route(Routes.SuperArea.Clients.ModalDeleteAccountManagerGET(item.SuperUserAccessPermissionId))"
                       @Html.DataAttribute_Modal(ModalType.Medium)>
                        <i class="fa fa-remove"></i>
                    </a>
                </td>
            </tr>
        }

我仍然在列表中找到它。哪里有问题?

【问题讨论】:

  • 您的p.SuperUserAccessPermissions 中的p 是什么?为什么需要.AsQueryable()
  • 我在 Microsoft SQL Server Management Studio 中删除了它
  • 然后您在 Management Studio 中运行了一个单独的查询以确认它实际上设置为 IsDeleted = 1?
  • @@Irmantas Želionis,你是否在使用像 Unity 这样的 IoC 模式?
  • @ershoaib 不,我不是

标签: c# .net asp.net-mvc


【解决方案1】:

首先,通过脚本从数据库中删除记录:

UPDATE [table] SET IsDeleted = true

其次,为了确定,选择刚刚删除的记录:

SELECT * FROM [table] WHERE IsDeleted = true

如果记录确实被删除,则启动应用程序并监视表中的任何新条目。您的应用程序可能会在代码的某处插入新记录。

如果记录还在,我会检查连接字符串。我曾多次发生过,我想承认应用程序连接到了错误的数据库。

【讨论】:

  • OP 显然正在使用软删除来删除该行。 DELETE FROM.... 不是他正在做或想做的事。
猜你喜欢
  • 2019-10-29
  • 1970-01-01
  • 2012-07-26
  • 2012-08-20
  • 1970-01-01
  • 2016-06-09
  • 2018-06-26
  • 2022-08-20
  • 1970-01-01
相关资源
最近更新 更多