为表 'Tarefas' 指定了多个标识列。每个表只允许一个标识列错误

时间:2021-06-30 22:05:46

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

你好吗?我在教育课程中遇到了 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; }

}

}

1 个答案:

答案 0 :(得分:0)

我正在使用实体框架,我使用 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("默认") { }

    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>

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