2017-05-30 76 views
0

我看了一些EF教程,但是我不知道幾件事情。我目前正在使用ADO與SQL服務器數據庫交互的.net測試項目中工作。現在我必須將ADO部分傳遞給實體框架。 我目前正在使用3層,業務,對象和DataAcess。從ADO到實體框架的ASP/C#

在DA中,我有以下查詢來從我的網站更新Employee表。它的工作原理,但我想通過使用Linq將它傳遞給實體框架。我還有其他一些插入和選擇的例子,但是我確信一旦我能夠對它進行排序,我就能找到它們。

注意:我已經使用實體框架將我的DataAccess類與數據庫連接起來,實體列表對象稱爲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

如果你只是要重新拋出它,不要捕捉異常。這樣做沒有意義。並且絕對不要在發現異常時拋出ex;否則將失去堆棧跟蹤。只要「扔」; – mason

+0

FYI你可以單行這些:'comm.Parameters.Add(「@ Name」,System.Data.SqlDbType.VarChar,70).Value = User.Name;'保存集合查找。 –

+0

不是我問過的,但很高興知道。 –

回答

1

我不確定如果我明白你說的話,但我想你想把你提到的這個純粹的ADO轉換成EntityFramework。我不確定在這個例子中你使用EF的步驟是什麼,所以我將列出整個步驟。

1-你需要使用包管理器來安裝的EntityFramework軟件包(在3層)

2-需要創建例如DataContext的來自的DbContext

3-延伸的上下文創建在DbSet職員,Employee類,其屬性

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

4-最後做一個更新

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

「r」是什麼意思? –

+1

它被稱爲lamda表達式,它意味着每個ROW都能讓我滿足這個條件的行:ROW.EmployeeID == User.UserID,你可以放任何你想要的變量,例如FirstOrDefault(p => p.EmployeeID = = User.UserID) –