Usuário com melhor resposta
O que tem de errado no meu código??

Pergunta
-
Estou tentando fazer um delete no banco, cara não dá certo de forma alguma... O que teria de errado nesse código? alguém poderia me ajudar? desde já obrigado.
[WebMethod(Description="Delete Employees")] public void deleteEmployees(int pDelEmployees) { NORTHWNDEntities ef = new NORTHWNDEntities(); var deleteEmployeesDetails = from details in ef.Employees where details.EmployeeID == pDelEmployees select details; ef.DeleteObject(deleteEmployeesDetails); ef.SaveChanges();
Respostas
-
da uma lida aqui: http://olavooneto.wordpress.com/2011/01/26/linq-to-entity-dicas/ no topico : 2. Deletando dados de entidades relacionadas
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta Heron Dantas sexta-feira, 4 de fevereiro de 2011 15:15
Todas as Respostas
-
Heron, a questão ai é que você está passando para o DeleteObject um IQueryable com os objetos que você quer deletar, o que não é aceito para este tipo de operação. Para você fazer isto você precisa passar a entidade a ser deletada. Faça assim e veja se vai da certo:
foreach(var employee in deleteEmployeesDetails) ef.DeleteObject(employee); ef.SaveChanges();
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
[WebMethod(Description="Delete Employees")] public void deleteEmployees(int pDelEmployees) { NORTHWNDEntities ef = new NORTHWNDEntities(); var deleteEmployeesDetails = from details in ef.Employees where details.EmployeeID == pDelEmployees select details; foreach (var employee in deleteEmployeesDetails) ef.DeleteObject(employee); ef.SaveChanges(); }
Olavo, mais uma vez me ajudando, muito obrigado.
Porém infelizmente, não deu certo ainda, mas vi em outro link na internet:
http://stackoverflow.com/questions/1394286/ado-net-entity-framework-delete-rowsEle usa o método
SubmitChanges();
ao invés de:
Saberia me dizer se existe mais alguma coisa que pode estar dando errado? desde já muito obrigado OlavoSaveChanges();
-
não deu certo por que ? qual foi o erro retornado ?
o SubmitChange é utilizado para DBML
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
Olavo, segue mensagem de erro:
System.Data.UpdateException: An error occurred while updating the entries. See the InnerException for details. ---> System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Orders_Employees". The conflict occurred in database "C:\USERS\HERON.DANTAS\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\ENTITYFRAMEWORK.PROJECT\EF\APP_DATA\NORTHWND.MDF", table "dbo.Orders", column 'EmployeeID'. The statement has been terminated. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 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) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 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(Boolean acceptChangesDuringSave) at System.Data.Objects.ObjectContext.SaveChanges() at EF.EFServices.deleteEmployees(Int32 pDelEmployees) in C:\Users\heron.dantas\Documents\Visual Studio 2010\Projects\EntityFramework.Project\EF\EFServices.asmx.cs:line 40
-
da uma lida aqui: http://olavooneto.wordpress.com/2011/01/26/linq-to-entity-dicas/ no topico : 2. Deletando dados de entidades relacionadas
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta Heron Dantas sexta-feira, 4 de fevereiro de 2011 15:15
-