EntityFramework One to One-or Zero

本文关键字:Zero One-or to One EntityFramework | 更新日期: 2023-09-27 17:50:55

我的"ShoppingCart"answers"ShoppingCartItems"表已经在我的数据库中。我试图添加一个名为"折扣代码"的新表。每个购物车可以有一个或0个折扣码。

我收到的错误是:无效的列名'discountId'。

[Table("ShoppingCarts")]
    public class ShoppingCart
    {

        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        [Column("cartID")]
        public string cartID { get; set; }
        public virtual IList<ShoppingCartItem> CartItems { get; set; }
        [Column("dateCreated")]
        public DateTime? DateCreated { get; set; }
        [Column("userID")]
        public Guid UserID { get; set; }
        public int? discountId { get; set; }
        public virtual Discount discount { get; set; }
    }
    [Table("discountCodes")]
    public class Discount
    {
        public int discountId { get; set; }
        public string discountCode{get;set;}
        [Required]
        public int percentOff { get; set; }
        [Required]
        public Boolean isActive { get; set; }
        public  ShoppingCart ShoppingCart { get; set; }
    }
public class ShoppingCartContext : DbContext
{
    public ShoppingCartContext()
        : base("MYDBConnectionString")
    {
        Database.SetInitializer<ShoppingCartContext>(new CreateDatabaseIfNotExists<ShoppingCartContext>());
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ShoppingCart>().HasKey(t => t.cartID)
                     .HasOptional(t => t.discount)
                     .WithOptionalPrincipal(d => d.ShoppingCart)
                     .Map(t => t.MapKey("cartID")); 
        modelBuilder.Entity<Discount>().HasKey(t => t.discountId)
                    .HasOptional(q => q.ShoppingCart);
    }   
    public DbSet<Discount> discountCodes { get; set; }
    public DbSet<ShoppingCart> ShoppingCart { get; set; }
    public DbSet<ShoppingCartItem> ShoppingCartItems { get; set; }
}

EntityFramework One to One-or Zero

如果你在一个现有的数据库上工作,你必须实现一个DbMigration,就像这里解释的那样:代码优先迁移。

如果您处于开发阶段,最简单的方法是删除数据库。