c# - 为表“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; }
}
}
解决方案
我正在使用实体框架,我使用我的 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>
我只挑选了必要的部分给你看。我很感谢任何帮助。
推荐阅读
- google-cloud-firestore - Cloud Firestore 函数触发器和事务 - 如何正确返回承诺
- php - 如何在 html 中使用 select 标签来选择特定的 sqlite3 查询与 php?
- c# - Healthcheck 端点在 Asp.Net Core 3.1 指定的时间段内执行了多次
- python - .isin() 之后仍显示列值
- reactjs - 如何在 React Native 的 Flatlists 中只显示一个元素
- quarkus - 是否有可能从受保护的 Spring 云配置服务器加载属性?
- python - 平铺名称不显示,只有对象名称显示在 Django 管理员上
- git - Git 从另一个分支合并——3 种不同的方法——都可以正常工作吗?
- java - 控制器类中的@Autowired 服务 bean 无法识别方法
- python - 有没有办法在 pandas Dataframe 的另一列中的最后 n 行的基础上找到一行的值?