我正在尝试将模型添加到我正在从事的项目中,今天却遇到了一个问题,即每次我尝试添加迁移时,都会出现错误“实体类型'_____'需要定义一个主键”。该模型具有一个称为“ ID”的属性,我尝试向其添加[Key]属性,甚至尝试删除除ID属性之外的所有内容,但该方法仍然无法使用。
这是模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace APD_Remastered_Ideas.Models
{
public class TestModel
{
[Key]
public int Id;
public string address { get; set; }
}
}
编辑:我也尝试过自己编写迁移文件:
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
namespace APD_Remastered_Ideas.Data.Migrations
{
public partial class addTestModelToDb : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TestModel",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
},
constraints: table =>
{
table.PrimaryKey("PK_TestModel", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TestModel");
}
}
}
我还尝试了在SSMS中手动创建表。在我所有其他项目中,以这种方式添加模型仍然有效。但是,在这个项目中,我无法添加任何内容。
有人知道我在做什么错吗?
答案 0 :(得分:0)
事实证明,我忘记将{get; set; }
放在Id属性后面。这是更正后的模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace APD_Remastered_Ideas.Models
{
public class TestModel
{
[Key]
public int Id { get; set; }
public string address { get; set; }
}
}