首页 > 解决方案 > 为表“Tarefas”指定了多个标识列。每个表只允许一个标识列错误

问题描述

你好吗?我在教育课程中遇到了 sqlite 数据库的一些问题。我有一个 MVC C# 项目,使用 DBContext。我已经创建了一个迁移,但是当我运行命令失败时,标题中出现了这条消息。我试过:重新创建数据库(不工作)检查数据库的身份(一个主键存在=> Id)检查与Program.cs中的数据库的连接(好的)检查我的模型(我认为它是正确的)

这是我的桌子模型:

命名空间 ProjetoPIM7.Models {

[Table("Tarefas")]
public class Tarefa
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int Id { get; set; }
    [Display(Name = "Descrição:")]        
    public string Descricao { get; set; }
    [Display(Name = "Data planejada:")]     
    public DateTime DataTarefa { get; set; }       
    public DateTime DataEncerramento { get; set; }

}

}

标签: c#asp.netasp.net-mvcweb

解决方案


我正在使用实体框架,我使用我的 SQLite DB 声明了 Web.config,如下所示:

<connectionStrings>
    <add name="Default" connectionString="Data Source=database.sqlite;Version=3"
      providerName="System.Data.SqlClient" />
</connectionStrings>

我创建的 EFContext 类:

公共类 EFContext : System.Data.Entity.DbContext{ 公共 EFContext() : base("Default") { }

    public System.Data.Entity.DbSet<Tarefa> Tarefas { get; set; }

我的 TarefasController 参考 EFContext 以提前获取信息:

public class TarefasController : Controller
{

    private EFContext context = new EFContext();
    // GET: Tarefas
    public ActionResult Tarefa()
    {
        return View(context.Tarefas.OrderBy(c => c.Descricao).ToList());
    }

然后,我的视图与指定的模型相关联,但在表上得到空返回:

@model List<WebApplication1.Models.Tarefa>
<tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem
                            => item.Id)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem
                            => item.Descricao)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem
                           => item.DataTarefa)
                        </td>
                    </tr>
                }
            </tbody>

我只挑选了必要的部分给你看。我很感谢任何帮助。


推荐阅读