2017-05-30 4 views
0

Ich sah ein paar EF-Tutorials, aber ich konnte ein paar Dinge nicht herausfinden. Ich arbeite derzeit in einem .net-Testprojekt, das ADO verwendet, um mit der SQL Server-Datenbank zu interagieren. Ich muss jetzt den ADO-Teil zum Entity-Framework übergeben. Ich arbeite derzeit mit 3 Schichten, Business, Objekt und DataAcess.ASP/C# von ADO zu Entity Framework

In DA habe ich die folgende Abfrage die Employee-Tabelle aus meiner Website zu aktualisieren. Es funktioniert, aber ich möchte dies mit Linq an Entity Framework weitergeben. Ich habe ein paar mehr Fälle wie diese mit einfügen und auswählen, aber ich bin sicher, dass ich in der Lage sein werde, sie herauszufinden, sobald ich das sortiere.

Hinweis: Ich habe meine DataAccess-Klasse bereits über Entity-Framework mit der Datenbank verbunden, und das Entitätslistenobjekt heißt ListEntities.

SqlConnection conn = new SqlConnection(); 
try 
{ 
    SqlCommand comm; 
    string connectionString = ConfigurationManager.ConnectionStrings["Test"].ConnectionString; 

    conn = new SqlConnection(connectionString); 

    comm = new SqlCommand("UPDATE Employee SET [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]", conn); 
    comm.Parameters.Add("@Name", 
    System.Data.SqlDbType.VarChar, 70); 
    comm.Parameters["@Name"].Value = User.Name; 

    comm.Parameters.Add("@Lname", 
    System.Data.SqlDbType.VarChar, 70); 
    comm.Parameters["@Lname"].Value = User.Lname; 

    comm.Parameters.Add("@Age", 
    System.Data.SqlDbType.Int); 
    comm.Parameters["@Age"].Value = User.Age; 

    comm.Parameters.Add("@Email", 
    System.Data.SqlDbType.NVarChar, 70); 
    comm.Parameters["@Email"].Value = User.Email; 

    comm.Parameters.Add("@AYear", 
    System.Data.SqlDbType.Int); 
    comm.Parameters["@Year"].Value = User.Year; 

    comm.Parameters.Add("@ColorID", 
    System.Data.SqlDbType.Int); 
    comm.Parameters["@ColorID"].Value = User.ColorID; 

    comm.Parameters.Add("@AvatarID", 
    System.Data.SqlDbType.Int); 
    comm.Parameters["@AvatarID"].Value = User.AvatarID; 

    comm.Parameters.Add("@EmployeeID", 
    System.Data.SqlDbType.Int); 
    comm.Parameters["@EmployeeID"].Value = User.UserID; 

    conn.Open(); 
    comm.ExecuteNonQuery(); 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
finally 
{ 
    conn.Close(); 
} 
+1

Fangen Sie keine Ausnahme, wenn Sie es nur erneut versuchen. Das hat keinen Sinn. Und definitiv nicht 'werfen Sie ex;' auf einer gefangenen Ausnahme, verlieren Sie die Stapelspur. Einfach 'throw;'. – mason

+0

FYI Sie können diese Zeilen einzeln eingeben: 'comm.Parameters.Add (" @ Name ", System.Data.SqlDbType.VarChar, 70) .Wert = User.Name;', um eine Sammlungssuche zu speichern. –

+0

Nicht wirklich, was ich gefragt habe, aber gut zu wissen. –

Antwort

1

Ich bin nicht sicher, ob ich verstanden, was Sie gesagt haben, aber ich denke, man diese reine ADO übersetzen möchten Sie EntityFramework erwähnt habe. Ich bin mir auch nicht sicher, mit welchem ​​Schritt Sie in diesem Beispiel bei EF sind, also werde ich die ganzen Schritte auflisten.

1- Sie müssen das EntityFramework Paket (auf den 3 Schichten) unter Verwendung des Paket-Manager

2- Sie einen Kontext zum Beispiel Datacontext erstellen müssen installieren, die

3- vom DbContext

erstreckt erstellen die DbSet Mitarbeiter, und die Klasse Mitarbeiter mit seinen Eigenschaften

public class DataContext : DbContext 
{ 
    public DbSet<Employee> Employees {get; set;} 
} 

4- und tun schließlich Update

Employee emp = DataContext.Employees.FirstOrDefault(r=>r.EmployeeID == User.UserID); 
emp.Name = User.Name; 
emp.Age = User.Age; 
... 
DataContext.SaveChanges(); 
+0

Was würde "r" dort bedeuten? –

+1

es heißt ein Lambda-Ausdruck, bedeutet es für jeden ROW bekomme ich die Zeile, die diese Bedingung erfüllen: ROW.EmployeeID == User.UserID, können Sie jede gewünschte Variable, zum Beispiel FirstOrDefault (p => p.EmployeeID = = Benutzer.UserID) –