实体框架核心 无法将类型 'System.Int32' 的对象强制转换为类型 'System.Int64'



DB第一实体框架核心在SaveChanges()时抛出此异常;这段代码可以很好地使用实体框架,但不能使用实体框架核心。

异常消息:无法强制转换类型为"System"的对象。Int32"到类型"System。Int64'。

CsProduct csProduct = new CsProduct()
{
CheapestPrice = 1,
LastPrice = 1,
LastUpdateDate = DateTime.Now,
ProductName = "123",
Quantity = 1,
UploadDate = DateTime.Now
};
CSContext ctx = new CSContext();
ctx.Entry(csProduct).State = EntityState.Added; 
// ctx.CsProduct.Add(csProduct); This does not work neither
csProduct.ProductNo = 0; // Still throws exception without this line
ctx.SaveChanges();  
------------------------------------------------------------------ 
CsProduct.cs
public partial class CsProduct
{
public CsProduct()
{
}
public long ProductNo { get; set; }
public string ProductName { get; set; }
public decimal CheapestPrice { get; set; }
public decimal LastPrice { get; set; }
public int Quantity { get; set; }
public DateTime UploadDate { get; set; }
public DateTime LastUpdateDate { get; set; }
public string Comment { get; set; }
}
------------------------------------------------------------------------------DDL创建表CS_Product(productNo bigint IDENTITY(1,1)NOT NULL,productName nvarchar(256)NOT NULL,cheapestPrice十进制(14,2)不为空,lastPrice decimal(14,2)NOT NULL,quantity int NOT NULL,uploadDate日期时间不为空,lastUpdateDate日期时间不为空,评论nvarchar(450),CONSTRAINT PK_CS_产品主键(productNo),)

这是我的错误。。当我第一次创建表时,productNo是bigint,我基于该表创建了模型。之后不知怎么的(一定是我…)productNo变成了int。在将productNo改回bigint 后,它运行得很好

这条线背后有原因吗

csProduct.ProductNo = 0;

保存后,框架将分配密钥。

只要去掉那一行,如果你想要ID,然后再删除。SaveChanges();然后检查实体的ID值。

csRepository.CSContext.SaveChanges();
var NewID = csProduct.ProductNo;

相关内容

  • 没有找到相关文章