Sql server 将数据从mvc保存到数据库

Sql server 将数据从mvc保存到数据库,sql-server,asp.net-mvc,database,model-view-controller,sql-server-2012,Sql Server,Asp.net Mvc,Database,Model View Controller,Sql Server 2012,大家好,我有一个Mvc,我正在尝试使用localdb向sql Server express数据库注册一个用户。这是我遇到的错误 " EntityFramework.dll中出现“System.Data.Entity.ModelConfiguration.ModelValidationException”类型的异常,但未在用户代码中处理 其他信息:在模型生成过程中检测到一个或多个验证错误: AfterCareWebsite.Patient::EntityType“Patient”未定义键。请定义此

大家好,我有一个Mvc,我正在尝试使用localdb向sql Server express数据库注册一个用户。这是我遇到的错误 " EntityFramework.dll中出现“System.Data.Entity.ModelConfiguration.ModelValidationException”类型的异常,但未在用户代码中处理

其他信息:在模型生成过程中检测到一个或多个验证错误:

AfterCareWebsite.Patient::EntityType“Patient”未定义键。请定义此EntityType的键

Patient:EntityType:EntitySet“Patient”基于未定义键的类型“Patient”。“

景色 登记


下面是一个链接,指向我试图在sql server中将其保存到的表的图像

请确保您的id字段已启用自动递增功能,只需更改给出错误的行,如下所示:

var patient = new Patient();

为患者对象提供一个新实例并更改变量名。

确保您的id字段已启用自动递增功能,只需更改给出错误的行,如下所示:

var patient = new Patient();

为您的患者对象提供一个新实例,并更改变量名称。

[编辑-我没有看到显示表格的图片]

首先

解决此问题后,几分钟后,您将遇到更复杂的问题:-(

我建议你在回到编码之前读一本关于MVC和EF的好书

或者尝试在网上提供的数千个教程中的一个,甚至可以从VisualStudio的起始页开始

而且…您的问题与EntityFramework相关,而不是MVC问题

解决方案

您必须在模型代码处显式地设置键(我假设它是一个标识键):

就这样。您的代码将成功地插入一名患者


但是,它不适用于更新,因为您的控制器没有提供预期的操作和Id。

[编辑-我没有看到显示表格的图片]

首先

解决此问题后,几分钟后,您将遇到更复杂的问题:-(

我建议你在回到编码之前读一本关于MVC和EF的好书

或者尝试在网上提供的数千个教程中的一个,甚至可以从VisualStudio的起始页开始

而且…您的问题与EntityFramework相关,而不是MVC问题

解决方案

您必须在模型代码处显式地设置键(我假设它是一个标识键):

就这样。您的代码将成功地插入一名患者


但是,它不适用于更新,因为您的控制器没有提供预期的操作和Id…。

嗨,我在数据库中将标识规范设置为“是”,因此它应该递增,并且我已将db.Patient.Create()更改为新患者(如您所说的0,但现在它在db.Patient.Add(Patient)上中断);我认为新的错误与上次相同Hi我在数据库中将标识规范设置为“是”,因此它应该增加,并且我已将db.Patient.Create()更改为new Patient(如您所说的0,但现在它在db.Patient.Add(Patient)上中断);我认为新的错误与上次相同感谢它停止了错误但没有插入它只是在我单击“注册”按钮时停留在页面上?此外,我正在遵循一个教程,但当涉及导致问题的数据库时,我需要不同的东西。请发出一个
SELECT*FROM Patient
(或
患者
)在数据库中。我很确定你的每次点击都有一个条目。这是因为你的“控制流”是不完整的:没有“列表”页面作为入口点,控制器在注册后不会重定向回列表或成功页面,等等……同样,请在尝试编写你的应用程序之前研究一个完整的MVC应用程序这似乎是个好主意:好吧,那么,没有线索。你能把解决方案和数据库都发送到我的电子邮件中吗-mvsabino@gmail.com?对于数据库:MDF文件(不需要LDF),备份,或生成的DDL脚本。您好,我想知道您是否得到了我与您共享的文件?谢谢,这阻止了错误,但它没有插入,只是在我单击“注册”按钮时留在页面上?此外,我正在学习教程,但当涉及导致问题的数据库时,我需要不同的东西。请发布从患者中选择*(或
患者
)在数据库中。我很确定你的每次点击都有一个条目。这是因为你的“控制流”是不完整的:没有“列表”页面作为入口点,控制器在注册后不会重定向回列表或成功页面,等等……同样,请在尝试编写你的应用程序之前研究一个完整的MVC应用程序这似乎是个好主意:好吧,那么,没有线索。你能把解决方案和数据库都发送到我的电子邮件中吗-mvsabino@gmail.com?对于数据库:MDF文件(不需要LDF)、备份或生成的DDL脚本。您好,我想知道您是否得到了我与您共享的文件?
       public class Patient
{
    [Required]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    //[HiddenInput(DisplayValue =false)]
    //public string ReturnUrl { get; set; }

    public string F_Name{ get; set; }
    public string L_Name { get; set; }

    public string Address_Line_1 { get; set; }
}
var patient = new Patient();
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }