更新:将BasketID的两种数据类型与int匹配不能解决问题。
导致错误的代码:
BasketItem duplicateBasketItem = (from thisitem in storeDB.BasketItems
where thisitem.sellerSKU == newItem.sellerSKU
select thisitem).SingleOrDefault();
引发错误:
System.Data.Entity.dll中出现“System.Data.EntityCommandExecutionException”类型的异常,但未在用户代码中处理
{“无效的列名'BasketID'。”}
我的模特:
public class Basket
{
[Key]
public int BasketID { get; set; }
public List<BasketItem> BasketItems { get; set; }
public int Count { get; set; }
public System.DateTime DateCreated { get; set; }
public Guid UserID { get; set; }
}
public class BasketItem
{
public int BasketItemID { get; set; }
public virtual string BasketID { get; set; }
public int sellerID { get; set; }
public string sellerSKU { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
}
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; }
}
答案 0 :(得分:0)
此错误消息告诉您绑定中存在错误,或者数据库表中没有此类列。我可以看到BasketID
中的BasketItem
是字符串,因此这是一个错误,将其更改为int
,看看它是如何发生的。
public class BasketItem
{
public int BasketItemID { get; set; }
public virtual int BasketID { get; set; }
答案 1 :(得分:0)
为BasketId写入int数据类型而不是字符串,如下所示: -
public class BasketItem
{
public int BasketItemID { get; set; }
public virtual int BasketID { get; set; }
public int sellerID { get; set; }
public string sellerSKU { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
}
BasketId在Basket表中是int,但是你在BasketItem表中指定了字符串,所以它没有找到它们之间的任何关系。尝试添加int数据类型,然后重试!
答案 2 :(得分:0)
能够通过不直接访问db上下文来解决一些小问题
ShoppingBasket myBasket = new ShoppingBasket();
myBasket.ShoppingBasketId = basketID;
Basket storebasket = (from ph in storeDB.Basket
where ph.BasketID == myBasket.ShoppingBasketId
select ph).SingleOrDefault();