【问题标题】:Data is modified without my consent未经我同意修改数据
【发布时间】:2014-09-16 17:35:12
【问题描述】:

我正在使用 .NET MVC 5 和实体框架我有这个模型:

public class Division
{
    public int Id { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }

    public virtual IList<Department> Departments { get; set; }

    [Display(Name = "Manager")]
    public string ManagerId { get; set; }

    [ForeignKey("ManagerId")]
    public virtual AppUser Manager { get; set; }

    public virtual IList<AppUser> Users { get; set; }
}

所以部门有一个经理。

当我让应用程序运行一段时间后,所有相关的管理器都会被删除,而我没有做任何事情! 仅删除了关系 ( ManagerId = null ) 而不是 Id,但它们仍然存在于 Users 表中。

任何建议将不胜感激。

(编辑) 谢谢卡尔,
我在表格分区上放了一个触发器,我注意到当我让应用程序运行一段时间然后尝试进入任何页面时它会更新!

【问题讨论】:

  • 允许对此实体执行哪些操作?例如编辑,删除?该模型是否发布了您的视图模型以及您的数据库对象?您是在寻找导致这种情况发生的代码原因,还是用户犯规?
  • 根据用户角色允许操作,因此管理员可以编辑和删除。
  • 在某些视图中用作 ViewModel。该应用程序尚未发布,所以我是唯一的用户,代码发生了一些奇怪的事情!
  • 有没有办法观察一个特定的表来知道它什么时候发生变化?什么改变了它?
  • 您可以运行 sql profiler - 为此您需要 sql web 或 sql dev,我不认为它带有 express,或者在表上放置一个 sql 触发器以进行更新,并记录尽可能多的信息尽你所能。如果您在调试中运行您的应用程序,请在提交到数据库的任何代码上放置断点以获取此对象或相关对象,让您有机会在提交之前和之后检查数据库。

标签: asp.net-mvc entity-framework code-first


【解决方案1】:

当我在未启用的情况下发布时问题已解决(在应用首次启动时运行迁移)。

我不知道确切的原因,但我认为当我让应用程序运行一段时间然后进入任何页面时,Seed 方法再次运行。

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2018-02-21
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多