If you're using a stored procedure for the insert or have an insert trigger that would be the first place to look. Otherwise, I would use a profiler to see what these insert statements (even when they succeed) really look like. If you don't have a profiler, it looks like EF Profiler will work with DevForce and they have a free trial download.
For example, here's an insert to the Customer table in Adventure Works:
exec sp_executesql N'insert [dbo].[Customer]([SalesPersonID], [TerritoryID], [CustomerType], [ModifiedDate], [rowguid])
values (null, null, @0, @1, @2)
select [CustomerID], [AccountNumber]
from [dbo].[Customer]
where @@ROWCOUNT > 0 and [CustomerID] = scope_identity()',N'@0 nchar(1),@1 datetime2(7),@2 uniqueidentifier',@0=N'S',@1='2010-12-15 00:00:00',@2='B970B5E3-DB0D-4B92-B3BA-074286704675'
Probably not what you'd expect, and because of the select for the store generated value you can see how an error could potentially occur.