2013-06-06 4 views
5

Ich benutze entityframework 5.0. Ich habe so viele Tests. Wenn ich einen Test alleine durchführe passiert es, wenn ich diesen mit den anderen in der gleichen Zeit laufen lasse, wird es nicht bestanden. Es besteht kein Kontakt zwischen den Tests. Immer wenn eine Abfrage gesendet wurde. Es würde nicht geändert werden.Remoteprozeduraufruf (RPC) Protokolldatenstrom ist falsch

**query:** 

insert [dbo].[Patient] 
     ([AddressId], 
     [FirstName], 
     [LastName], 
     [MiddleName], 
     [MuthersName], 
     [Sex], 
     [BirthDate], 
     [TAJNumber], 
     [Height], 
     [Weight], 
     [PhoneMobil], 
     [PhoneHome], 
     [Email], 
     [OtherDisease]) 
values (13 /* @0 */, 
     'Peter' /* @1 */, 
     'Peter' /* @2 */, 
     'Peter' /* @3 */, 
     'Maria' /* @4 */, 
     1 /* @5 */, 
     '1991-07-04T00:00:00' /* @6 */, 
     '5464845' /* @7 */, 
     170 /* @8 */, 
     66 /* @9 */, 
     '00456249864' /* @10 */, 
     '00456249864' /* @11 */, 
     '[email protected]' /* @12 */, 
     null) 



select [Id] 
from [dbo].[Patient] 
where @@ROWCOUNT > 0 
     and [Id] = scope_identity() 



**WARN:** 
System.Data.SqlClient.SqlException (0x80131904): The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 9 ("@6"): The supplied value is not a valid instance of data type datetime2. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision. 
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 
    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 
    at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 
    at System.Data.SqlClient.SqlDataReader.get_MetaData() 
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 
    at HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledCommand.ExecuteDbDataReader(CommandBehavior behavior) 
ClientConnectionId:c184fe10-8d28-4b0b-96bf-395796cd0e29 




**exception:** 
Test Name: VM_PatientRegistration_Insert 
    Test FullName: **Insert 
    Test Source: **line 23 
    Test Outcome: Failed 
Test Duration: 0:00:01,0018114 

Result Message: 
Test method TandoCare.Desktop.Test.ViewModel.PatientRegistrationViewModelTest.VM_PatientRegistration_Insert threw exception: 
System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 9 ("@6"): The supplied value is not a valid instance of data type datetime2. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision. 
Result StackTrace: 
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 
    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 
    at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 
    at System.Data.SqlClient.SqlDataReader.get_MetaData() 
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 
    at HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 
    at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues) 
    at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) 
--- End of inner exception stack trace --- 
    at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) 
    at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) 
    at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) 
    at System.Data.Entity.Internal.InternalContext.SaveChanges() 
--- End of inner exception stack trace --- 
    at System.Data.Entity.Internal.InternalContext.SaveChanges() 
    at System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 
    at System.Data.Entity.DbContext.SaveChanges() 
    at TandoCare.Infrastructure.Data.UnitOfWork.UnitOfWorkBase`1.Save() in ** at TandoCare.Desktop.Test.ViewModel.PatientRegistrationViewModelTest.VM_PatientRegistration_Insert() in *** :line 55 

Antwort

2

ok, ich denke, das Problem kommt von Ihnen Parameter @ 6. Es scheint, dass das Format ungültig ist. Haben Sie versucht, etwas wie das Datum zu erstellen: new DateTime (1991,07,04) .ToShortDateString()?

+0

Ich habe das auch gelesen. Aber wenn der "Parameter" falsch ist, warum funktioniert es, wenn ich den Test alleine führe? Die Abfrage ist gleich – user1693057

5

Dieses Problem trat auf, als ich versuchte, eine neue Zeile mit Datentyp float column einzufügen. und diese Ausnahme wird ausgelöst, wenn ich versuche, Werte (Unendlich) oder (NaN) einzufügen, und diese Werte werden vom SOL-Server nicht unterstützt.

Wenn Sie Entity Framework verwenden, wird empfohlen, es zu verwenden (http://hibernatingrhinos.com/products/EFProf/learn/). um generiertes SQL zu verfolgen. und ermitteln Sie den Parameter, der Ihr Problem verursacht.

SQL Profiler wird Ihnen nicht helfen, wenn Sie TPT (Table-Per-Type) verwenden.

enter image description here enter image description here

0

diese Zeile in meinem gespeicherten Prozedur Hinzufügen löste das Problem für mich

SET NOCOUNT OFF;