IDENTITY_INSERT设置为OFF(应该是)

时间:2013-03-12 15:05:41

标签: c# silverlight linq-to-sql

我正在尝试使用带有Service Refrence的Silverlight C#在SQL表中创建一个新行。我收到以下错误:

  

IDENTITY_INSERT设置为OFF

但我希望自动提供Cart_ID

表格定义:

enter image description here enter image description here

这是我的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();
}

1 个答案:

答案 0 :(得分:3)

很可能属性Cart_ID未标记为在上下文类声明中生成的数据库。默认情况下,此属性包含0,Linq to SQL尝试将此值插入DB中的相应列并失败。

确保装饰属性ColumnAttribute的{​​{1}}参数Cart_IDIsPrimaryKey设置为IsDbGenerated。您也可以在设计器的“属性”窗格中查看true

UPDATE (在查看上下文代码之后):Cart_ID属性在属性中缺少Cart_ID参数,正如预期的那样。将其设置为IsDbGenerated,一切都应该有效。