我正在尝试使用带有Service Refrence的Silverlight C#在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();
}
答案 0 :(得分:3)
很可能属性Cart_ID
未标记为在上下文类声明中生成的数据库。默认情况下,此属性包含0,Linq to SQL尝试将此值插入DB中的相应列并失败。
确保装饰属性ColumnAttribute
的{{1}}参数Cart_ID
和IsPrimaryKey
设置为IsDbGenerated
。您也可以在设计器的“属性”窗格中查看true
。
UPDATE (在查看上下文代码之后):Cart_ID
属性在属性中缺少Cart_ID
参数,正如预期的那样。将其设置为IsDbGenerated
,一切都应该有效。