首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFrameWork SaveChanges误差

EntityFrameWork SaveChanges误差
EN

Stack Overflow用户
提问于 2014-07-08 21:53:08
回答 1查看 179关注 0票数 0

我试图通过使用实体框架(代码优先)对数据库进行更改。在尝试保存更改之前,所有操作都很正常,当抛出错误时:

无效列名BasketID

但是,在调试期间,查看storeDB.BasketItems,实际上添加了basketitem

我错过了什么?

代码:

代码语言:javascript
复制
// Basket is ENTIRELY Empty, add new item and move on.
if (storebasket == null || storebasket.BasketItems.Count == 0)
{
   // Add item as is
   BasketItem newItem = new BasketItem
              {
                sellerSKU = basketItem.sellerSKU,
                BasketID = basketID,
                sellerID = 1,
                Quantity = basketItem.Quantity,
                Price = basketItem.Price
              };

   storeDB.BasketItems.Add(newItem);
   storeDB.SaveChanges();
}

数据库实体:

代码语言:javascript
复制
public class StoreEntities : DbContext
{
    public DbSet<Order> Order { get; set; }
    public DbSet<OrderItems> OrderItems { get; set; }
    public DbSet<Basket> Basket { get; set; }
    public DbSet<BasketItem> BasketItems { get; set; }
}

课程:

代码语言:javascript
复制
public class Basket
{
    [Key]
    public string BasketID { get; set; }

    public virtual IList<BasketItem> BasketItems { get; set; }
    public System.DateTime DateCreated { get; set; }
    public Guid UserID { get; set; }
}

public class BasketItem
{
    [Key]
    public int BasketItemID { get; set; }

    public virtual string BasketID { get; set; }
    [Required]
    public int sellerID { get; set; }
    [Required]
    public string sellerSKU { get; set; }
    [Required]
    public int Quantity { get; set; }
    [Required]
    public decimal Price { get; set; }
}

选项粘贴编辑作为答案:

我不知道为什么这会解决这个问题,但是这个程序现在可以正常工作了。

代码语言:javascript
复制
public StoreEntities(): base("storeDBConnectionString") 
 {
     Database.SetInitializer<StoreEntities>(
           new DropCreateDatabaseAlways<StoreEntities>());
EN

回答 1

Stack Overflow用户

发布于 2014-07-22 21:19:21

如果您查看您的BasketItem类,您将您的BasketID设置为虚拟的.这将导致实体框架不将属性绑定到列。正确的做法是:

代码语言:javascript
复制
public class BasketItem
{
[Key]
public int BasketItemID { get; set; }

public virtual Basket Basket { get; set; }

public string BasketID { get; set; }

[Required]
public int sellerID { get; set; }
[Required]
public string sellerSKU { get; set; }
[Required]
public int Quantity { get; set; }
[Required]
public decimal Price { get; set; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24642144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档