2013-02-15 33 views
2

我是DotNetNuke的新手,我正在創建一個新的模塊,並且試圖找出在數據庫中上傳數據的最佳方式。如何將項目的更新發送到DotNetNuke模塊中的數據庫?

我用這個代碼:

public void UpdateStudentByID(int studentID, Student student) 
{ 
    using (IDataContext ctx = DataContext.Instance()) 
    { 
     var rep = ctx.GetRepository<Student>(); 
     rep.Update(student); 
    } 
} 

但問題是它沒有更新數據庫中的任何東西,當我檢查的SQL配置文件,我發現它產生這個查詢:

exec sp_executesql N'UPDATE [Attendance_Students] SET [Surname] = @0, [GivenNames] = @1, [Birthdate] = @2, [Gender] = @3, [Address1] = @4, [Address2] = @5, [State] = @6, [PostCode] = @7, [Notes] = @8, [CreatedByUserId] = @9, [LastModifiedOnDate] = @10 WHERE [StudentId] = @11',N'@0 nvarchar(4000),@1 nvarchar(4000),@2 datetime,@3 nvarchar(4000),@4 nvarchar(4000),@5 nvarchar(4000),@6 nvarchar(4000),@7 nvarchar(4000),@8 nvarchar(4000),@9 int,@10 datetime,@11 int',@0=N'Good',@1=N'Good',@2='2013-02-20 00:00:00',@3=N'Male',@4=N'dsfdfsdfdf',@5=N'',@6=N'SA',@7=N'',@8=N'good',@9=1,@10='2013-02-15 02:58:39.047',@11=0 

從查詢中可以明顯看出,沒有產生更新特定項目的條件。

那麼什麼是最好的方式來更新對象到數據庫中?

回答

2

您傳遞不具有其StudentId屬性設置爲值Student對象 - 這就是爲什麼你在那裏標準試圖更新調用函數之前,其中studentid = 0設定值,你應該很好去。

而且通過這樣做,你就不會需要調用UpdateStudentByID同時傳遞studentId和學生,而是隻需要調用UpdateStudent並通過學生。

... 
//Before calling UpdateStudent, make sure your StudentId property is set 
student.StudentId = 123; 
.... 

public void UpdateStudent(Student student) 
{ 
    using (IDataContext ctx = DataContext.Instance()) 
    { 
     var rep = ctx.GetRepository<Student>(); 
     rep.Update(student); 
    } 
} 

希望這有助於。

相關問題