Announcement

Collapse
No announcement yet.

excute t-sql direct in entity framwork 3.5

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • excute t-sql direct in entity framwork 3.5

    Hallo allerseits,

    Ich arbeite mit Entity Framework 3.5 und will ein einfachen insert SQL command direkt ausführen:

    Code:
    using (var conn = new EntityConnection(ConfigurationManager.ConnectionStrings["FS"].ConnectionString))
                {
                    try
                    {
                        conn.Open();
    
                        EntityCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "insert into FS.dbo.STATUS (HDR_ID, STAT_ID, Nachricht, SYSDAT, SYSUID) values (100080, 1, 'Hallo', getDate(), 0)"; ;
     
                        cmd.ExecuteNonQuery();
    }
    Ich bekomme folgende Fehlermeldung:

    System.Data.EntitySqlException: The query syntax is not valid., near identifier 'TABLE', line 1, column 8.
    at System.Data.Common.EntitySql.CqlParser.yyerror(Str ing s)
    at System.Data.Common.EntitySql.CqlParser.yyparse()
    at System.Data.Common.EntitySql.CqlParser.Parse(Strin g query)
    at System.Data.Common.EntitySql.CqlQuery.Parse(String query, ParserOptions parserOptions)
    at System.Data.Common.EntitySql.CqlQuery.Compile(Stri ng query, Perspective perspective, ParserOptions parserOptions, Dictionary`2 parameters, Dictionary`2 variables, Boolean validateTree)
    at System.Data.EntityClient.EntityCommand.MakeCommand Tree()
    at System.Data.EntityClient.EntityCommand.CreateComma ndDefinition()
    at System.Data.EntityClient.EntityCommand.TryGetEntit yCommandDefinitionFromQueryCache(EntityCommandDefi nition& entityCommandDefinition)
    at System.Data.EntityClient.EntityCommand.GetCommandD efinition()
    at System.Data.EntityClient.EntityCommand.InnerPrepar e()
    at System.Data.EntityClient.EntityCommand.ExecuteRead er(CommandBehavior behavior)
    at System.Data.EntityClient.EntityCommand.ExecuteScal ar[T_Result](Func`2 result


    Danke
    Zuletzt editiert von foufou; 09.11.2010, 17:24.

  • #2
    Und das Ganze im ManagementStudio ausgeführt funktioniert einwandfrei? Da kommt nämlich im Fehlertext ein Identifier 'TABLE' vor, den es im SQL-Statement nicht gibt. Das kann zB. passieren, wenn ein Trigger an der Tabelle hängt und in diesem oder einer von diesem aufgerufenen Prozedur geht dann was schief.

    bye,
    Helmut

    Comment


    • #3
      Die Lösung sieht wie folgt aus:

      Code:
      var entityConn = ctx.Connection as EntityConnection; 
      var dbConn = entityConn.StoreConnection as SqlConnection;
      
      Once you have this connection you are free to issue a query or command in the normal ADO.NET way:
      
      dbConn.Open(); 
      var cmd = new SqlCommand("SELECT * FROM PRODUCTS", dbConn ); 
      using (var reader = cmd.ExecuteReader()) 
      { 
          while (reader.Read()) 
          { 
              Console.WriteLine("Product: ID:{0} Name:{1} CategoryID:{2}", 
                  reader[0].ToString(), 
                  reader[1].ToString(), 
                  reader[2].ToString() 
              ); 
          } 
      } 
      dbConn.Close();

      Comment


      • #4
        Komische Lösung - aus einem Insert wurde ein Select ... vielleicht solltest du beim nächsten Mal vorher etwas nachdenken, was du wirklich für ein Problem hast.

        Comment


        • #5
          Das war nur ein Lösung Ansatz den ich in einem Blog gefunden hatte, und mir persönlich sehr hilfreich war. Ich wollte es einfach mit die andren Forum user mitteilen.

          Mein SQL Command Text hat sich natürlich nicht geändert!!
          Insert into FS.dbo.Status ....

          Blog-Link:
          http://blogs.msdn.com/b/alexj/archiv...-database.aspx

          MFG
          Zuletzt editiert von foufou; 11.11.2010, 11:50.

          Comment

          Working...
          X