EntityFramework无效的列名
本文关键字:无效 EntityFramework | 更新日期: 2023-09-27 18:11:50
UPDATE:将BasketID的两个数据类型都匹配为int并不能解决问题。
导致错误的代码:
BasketItem duplicateBasketItem = (from thisitem in storeDB.BasketItems
where thisitem.sellerSKU == newItem.sellerSKU
select thisitem).SingleOrDefault();
正在抛出的错误:
类型为'System.Data '的异常。在System.Data.Entity.dll中发生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; }
}
这个错误消息告诉您绑定中有错误,或者数据库表中没有这样的列。我可以看到BasketItem
中的BasketID
是字符串,所以这里有一个错误,把它改成int
,看看结果如何。
public class BasketItem
{
public int BasketItemID { get; set; }
public virtual int BasketID { get; set; }
为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数据类型,然后再试一次!
可以通过不直接访问db上下文来解决这个问题
ShoppingBasket myBasket = new ShoppingBasket();
myBasket.ShoppingBasketId = basketID;
Basket storebasket = (from ph in storeDB.Basket
where ph.BasketID == myBasket.ShoppingBasketId
select ph).SingleOrDefault();