无法将重复值插入Unique索引(但......)

时间:2012-08-09 14:59:36

标签: c# asp.net .net entity-framework razor

我正在尝试将产品添加到购物车,但它会返回以下内容:

更新条目时发生错误。有关详细信息,请参阅内部异常。

  

内部异常:System.Data.SqlServerCe.SqlCeException(0x80004005):   无法将重复值插入唯一索引。 [表名   = Cart,Constraint name = PK_ Cart _0000000000000997]在System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)at at   System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr的&安培;   pCursor,布尔& isBaseTableCursor)at   System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(的CommandBehavior   behavior,String方法,ResultSetOptions选项)at   System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()at   System.Data.SqlServerCe.SqlCeMultiCommand.ExecuteNonQuery()at   System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator   翻译器,EntityConnection连接,字典2 identifierValues, List 1 generatedValues)at   System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager   stateManager,IEntityAdapter适配器)

     

堆栈跟踪   System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager   stateManager,IEntityAdapter适配器)at   System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager   entityCache)   System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项)at   System.Data.Objects.ObjectContext.SaveChanges()at   JTS.Security.Identity.Push.ToCart(Int32 userId,String partNumber,   String productDescription,Int32数量,十进制价格,十进制   lineTotal,String orderId,DateTime dateTime,Boolean isBoxed)in   c:\ Users \ Jase \ Documents \ Visual Studio   2012 \ WebSites \ One \ App_Code \ JTS.cs:第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;
                }

此外,如果我创建一个新订单(创建一个新订单ID),它将添加一个项目到购物车。但是,在现有的OrderId下,它永远不会在购物车中添加任何超过1个商品!

我做错了什么?为什么这不起作用?

表定义
Column Name   Data Type   Length   Allow Nulls     Unique    Primary Key
UserId        int         4        Yes             No        No
OrderId       nvarchar    1000     No              No        Yes

1 个答案:

答案 0 :(得分:0)

如果您有一个删除并重新添加内容的表,则在插入ID等于现有ID的新行时可能会出现此错误 为什么不检查这个Link表单更多信息