我正在尝试将产品添加到购物车,但它返回以下内容:
更新条目时出错。有关详细信息,请参阅内部异常。
内部异常:System.Data.SqlServerCe.SqlCeException (0x80004005):无法将重复值插入唯一索引。[表名 = Cart,Constraint name = PK_ Cart _0000000000000997] 在 System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor, Boolean& isBaseTableCursor) 在 System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr) 在 System.Data.SqlServerCe System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() 的 System.Data.SqlServerCe.SqlCeMultiCommand.ExecuteNonQuery() 的 System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() 的 .SqlCeCommand.ExecuteCommand(CommandBehavior 行为,字符串方法,ResultSetOptions 选项) System.Data.Mapping.Update.Internal.DynamicUpdateCommand .Execute(UpdateTranslator 翻译器,EntityConnection 连接,字典
2 identifierValues, List
1 generateValues) 在 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter 适配器)System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 的 System.Data.Objects.ObjectContext.SaveChanges 的 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter 适配器) 的堆栈跟踪(SaveOptions 选项) 在 System.Data.Objects.ObjectContext.SaveChanges() 在 JTS.Security.Identity.Push.ToCart(Int32 userId, String partNumber, String productDescription, Int32 quantity, Decimal price, Decimal lineTotal, String orderId, DateTime dateTime, Boolean isBoxed ) 在 c:\Users\Jase\Documents\Visual Studio 2012\WebSites\One\App_Code\JTS.cs:line 251
但问题是,我没有任何唯一索引。我什至尝试删除所有主键(只是为了看看这是否会改变任何东西) - 它没有。
编码:
public bool ToCart(int userId,
string partNumber,
string productDescription,
int quantity,
decimal price,
decimal lineTotal,
string orderId,
DateTime dateTime,
bool isBoxed)
{
bool addedToCart = false;
try
{
Cart cart = new Cart()
{
UserId = userId,
PartNumber = partNumber,
Description = productDescription,
Quantity = quantity,
Price = price,
LineTotal = lineTotal,
OrderId = orderId,
OrderDate = dateTime,
IsBoxed = isBoxed
};
database.AddToCarts(cart);
database.SaveChanges();
addedToCart = true;
}
catch (Exception exception)
{
addedToCart = false;
//Response(exception.Message);
addToCartExceptionDetails = exception.Message +
Environment.NewLine + Environment.NewLine + "Inner exception" +
exception.InnerException +
Environment.NewLine + Environment.NewLine + "Stack trace" +
exception.StackTrace;
}
return addedToCart;
}
此外,如果我创建一个新订单(创建一个新的 OrderID),它将向购物车添加一个项目。但是,它永远不会在现有 OrderId 下向购物车添加超过 1 件商品!
我究竟做错了什么?为什么这不起作用?
表定义Column Name Data Type Length Allow Nulls Unique Primary Key
UserId int 4 Yes No No
OrderId nvarchar 1000 No No Yes