2

当我尝试通过编辑或详细信息操作访问模型时,我不断收到错误消息。

自数据库创建以来,支持“InjuriesContext”上下文的模型已更改。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

首先,我尝试添加迁移,即使我确定我没有更改任何内容。更新数据库后仍然收到相同的错误。

然后我删除了所有的迁移和数据库,并启动了一个带有初始迁移和更新的干净数据库。同样的错误。什么都没有改变。

型号为:

public class InjuriesContext : DbContext
    {
        public InjuriesContext()
            : base("DBCon")
        {
        }

        public DbSet<Patient> Patients { get; set; }

        public DbSet<Injury> Injuries { get; set; }
    }

    public class Injury
    {
        public int Id { get; set; }
        public string Type { get; set; }
        public int PatientId { get; set; }
    }

这里是控制器——

public ActionResult Edit(int id = 0)
        {
            Injury injury = db.Injuries.Find(id);
            if (injury == null)
            {
                return HttpNotFound();
            }
            return View(injury);
        }

它在injury.find 上出错。我没有输入任何伤害,所以我希望它会像我的其他控制器一样返回 404,但它不喜欢这个。这个和我的其他模型之间的唯一区别是复数的 y 到 ies。实体框架不处理这个吗?

4

2 回答 2

1

不应该有任何复数限制,因为无论如何您都在类中明确定义了所有内容。

您是否创建了 Injures 表?

我相信表格 Injury 会自动创建。可变伤害可能有点接近,但我必须自己测试一下。

而是尝试:

public class Injury
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Type { get; set; }
    [Required]
    public int PatientId { get; set; }
}


    private InjuriesContext db = new InjuriesContext();
    Injury objInjury = db.Injuries.Find(id);
    if (objInjury == null)
    {
        return HttpNotFound();
    }
    return View(objInjury);

希望这可以帮助

于 2013-01-04T00:55:39.520 回答
0

事实证明,我的问题与多个上下文有关。我认为您必须为每个模型类创建一个单独的上下文。显然实体框架需要一个上下文。我经历并为我的上下文创建了一个类,并将我所有的数据库集放在那个类中。

    public class ProjContexts : DbContext
    {
         public ProjContexts()
            : base("ProjDBCon")
        {
        }

        public DbSet<Patient> Patients { get; set; }
        public DbSet<PreHosp> PreHosps { get; set; }
        public DbSet<UserProfile> UserProfiles { get; set; }
        public DbSet<Injury> Injuries { get; set; }

    }
}

然后我根据这篇文章删除了所有迁移并再次启用迁移进行了添加迁移和更新,然后我得到了预期的结果。

底线--- 在您的项目中不要有多个上下文类。不确定这是否可行,但在更改上述内容后,一切都按预期工作。不知道为什么当我有两个不同的上下文并添加第三个时它会起作用?也许是因为他们彼此有外键?

于 2013-01-09T20:22:32.177 回答