插入抛出错误:指定的强制转换无效

时间:2014-05-23 09:17:30

标签: c# linq

我在WPF应用程序中工作。

以下是我正在使用的表架构:

enter image description here

在此表中, 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)

我无法理解我哪里出错了。

3 个答案:

答案 0 :(得分:3)

您是否为主键设置了身份?如果不是,那么你应该手动设置主键...

答案 1 :(得分:0)

需要设置主键的标识。手动,如果还没有。

答案 2 :(得分:0)

我找到了解决方法。实际上问题不在linq查询中,问题出在触发器上,这是 t_table_name 插入时触发的。此触发器进一步调用存储过程,该存储过程用于根据某些条件创建文件。

这是我从存储过程中获得的输出:

enter image description here

要解决此问题,我使用的执行命令如下:

   dc.ExecuteCommand("Insert into t_table_name (file_name) values ({0})", "test3");

现在代码工作正常: - )