2

商品をカートに追加しようとしていますが、次のように返されます。

エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。

内部例外: System.Data.SqlServerCe.SqlCeException (0x80004005): 一意のインデックスに重複する値を挿入することはできません。[テーブル名 = Cart、制約名 = PK_ Cart _0000000000000997] System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr) で System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor、Boolean& isBaseTableCursor) で System.Data.SqlServerCe .SqlCeCommand.ExecuteCommand(CommandBehavior 動作、文字列メソッド、ResultSetOptions オプション) System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() で System.Data.SqlServerCe.SqlCeMultiCommand.ExecuteNonQuery() で System.Data.Mapping.Update.Internal.DynamicUpdateCommand .Execute(UpdateTranslator トランスレーター、EntityConnection 接続、Dictionary2 identifierValues, List1 generatedValues) System.Data.Mapping.Update.Internal.UpdateTranslator.Update (IEntityStateManager stateManager、IEntityAdapter アダプター) で

System.Data.Objects.ObjectContext.SaveChanges(SaveOptions オプションの System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) の System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager、IEntityAdapter アダプター) でのスタック トレース) System.Data.Objects.ObjectContext.SaveChanges() at 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: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 を作成する) 新しい注文を作成すると、カートに 1 つのアイテムが追加されます。ただし、既存の OrderId の下のカートにアイテムが 1 つ以上追加されることはありません。

私は何を間違っていますか?なぜこれが機能しないのですか?

テーブル定義
Column Name   Data Type   Length   Allow Nulls     Unique    Primary Key
UserId        int         4        Yes             No        No
OrderId       nvarchar    1000     No              No        Yes
4

1 に答える 1

0

コンテンツを削除して再追加したテーブルがある場合、既存の ID と同じ ID を持つ新しい行を挿入しているときにこのエラーが発生する可能性があります。このリンクフォームを確認してください 詳細情報

于 2012-08-30T14:37:30.737 に答える