2

サービス参照を使用してSilverlightC#を使用して、SQLテーブルにデータを含む新しい行を作成しようとしています。次のエラーが発生します:

IDENTITY_INSERTに設定されOFFます。

しかし、私はCart_ID自動的に与えられることを望みます。

テーブル定義:

ここに画像の説明を入力してください ここに画像の説明を入力してください

これは私のC#コードです:

void createNewCart(String inpCartName)
{
    PositionServiceReference.PositionServiceClient service = new PositionServiceReference.PositionServiceClient();

    Lloyds_Cart newCart = new Lloyds_Cart();
    newCart.Cart_Date = DateTime.Today;
    newCart.Cart_Name = inpCartName;

    service.CreateNewCartCompleted += 
        new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(service_CreateNewCartCompleted);
    service.CreateNewCartAsync(newCart);
}

私のC#運用契約(サービス参照):

[OperationContract]
void CreateNewCart(Lloyds_Cart newCart)
{
    PositionDataClassesDataContext context = new PositionDataClassesDataContext();

    context.Lloyds_Carts.InsertOnSubmit(newCart);
    context.SubmitChanges();
}
4

1 に答える 1

3

ほとんどの場合、プロパティCart_IDはコンテキストクラス宣言で生成されたDBとしてマークされていません。デフォルトでは、このプロパティには0が含まれ、Linq to SQLはこの値をDBの対応する列に挿入しようとして、失敗します。

ColumnAttribute装飾プロパティCart_IDにパラメータがIsPrimaryKeyあり、にIsDbGenerated設定されていることを確認してくださいtrue。のプロパティペインのデザイナで確認することもできますCart_ID

更新(コンテキストコードを確認した後):期待どおり、Cart_IDプロパティIsDbGeneratedに属性のパラメーターがありません。に設定するとtrue、すべてが機能するはずです。

于 2013-03-12T15:33:27.067 に答える