设置概念证明应用程序。我已在VS2017中的ApplicationDbContext
模板中添加了Transaction
课程和Web Application (Model-View-Controller)
课程。
当我尝试运行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
}
}
根据我的阅读,实体框架核心应该看到我有一个名为Id
的属性并将其作为我的主键,如果出于某种奇怪的原因它没有这样做,[Key]
属性应该强制它成为主键。
不幸的是,现实似乎与我不同意。有什么想法吗?
答案 0 :(得分:2)
今天的教训是“不要只是点击Intellisense给你的第一件事,特别是当使用含糊的类名时”
原来我不想using System.Transactions;
,我希望using WebApplication4.Models
文件中有ApplicationDbContext
。