商品をカートに追加しようとしていますが、次のように返されます。
エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。
内部例外: 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 接続、Dictionary
2 identifierValues, List
1 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