我在WPF应用程序中工作。
以下是我正在使用的表架构:
在此表中, file_name 不是身份密钥, ID 是标识列。
以下是我正在使用的代码:
t_table_name t = new t_table_name
{
file_name = "test"
};
dc.t_table_names.InsertOnSubmit(t);
dc.SubmitChanges();
错误:
at System.Data.SqlClient.SqlBuffer.get_Int32()
at Read_Object(ObjectMaterializer`1 )
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicInsert(TrackedObject item)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.Insert(TrackedObject item)
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at OMS.MyOrders.Model.MyOrderExecutor.SaveTransactions(List`1 changes)
at OMS.MyOrders.Model.MyOrderExecutor.SavePartReceiving(List`1 source, String system)
我无法理解我哪里出错了。
答案 0 :(得分:3)
您是否为主键设置了身份?如果不是,那么你应该手动设置主键...
答案 1 :(得分:0)
需要设置主键的标识。手动,如果还没有。
答案 2 :(得分:0)
我找到了解决方法。实际上问题不在linq查询中,问题出在触发器上,这是 t_table_name 插入时触发的。此触发器进一步调用存储过程,该存储过程用于根据某些条件创建文件。
这是我从存储过程中获得的输出:
要解决此问题,我使用的执行命令如下:
dc.ExecuteCommand("Insert into t_table_name (file_name) values ({0})", "test3");
现在代码工作正常: - )