首页 文章

实体类型要求使用键属性定义主键错误

提问于
浏览
1

设置概念验证应用程序 . 我在VS2017的 Web Application (Model-View-Controller) 模板中添加了 ApplicationDbContext 类和我的 Transaction 类 .

当我尝试运行 Add-Migration AddsTransactions 时出现此错误:

实体类型“交易”需要定义主键 .

这是我的 ApplicationDbContext

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Transactions;

namespace WebApplication4.Data
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {
        }

        public DbSet<Transaction> Transactions { get; set; }
    }
}

而我的 Transaction 模特班:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication4.Models
{
    public class Transaction
    {
        [Key]
        public int Id { get; set; }
        public DateTimeOffset TransactionDate { get; set; }
        public decimal TransactionAmount { get; set; }

        public bool OnHold
        {
            get { return this.FundingStatus == FundingStatus.Held; }
            set { this.FundingStatus = FundingStatus.Held; }
        }

        public FundingStatus FundingStatus { get; set; }
    }

    public enum FundingStatus
    {
        New,
        Submitted,
        Funded,
        Held
    }
}

从我读过的内容来看,Entity Framework Core应该看到我有一个名为 Id 的属性,并将其作为我的主键,如果由于一些奇怪的原因它没有这样做, [Key] 属性应该强制它成为主键 .

不幸的是,现实似乎与我不同意 . 有任何想法吗?

1 回答

  • 1

    今天的教训是“不要只是点击Intellisense给你的第一件事,特别是当使用模糊的类名时”

    结果我不想 using System.Transactions; ,我想 using WebApplication4.Models 在我的 ApplicationDbContext 文件中 .

相关问题