如何在DotNetNuke模块中将项目更新发送到数据库

本文关键字:更新 数据库 项目 DotNetNuke 模块 | 更新日期: 2023-09-27 17:59:41

我是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

从查询中可以明显看出,没有生成用于更新特定项的where条件。

那么,将对象更新到数据库中的最佳方式是什么呢?

如何在DotNetNuke模块中将项目更新发送到数据库

您传入的Student对象没有将其StudentId属性设置为值,这就是为什么您的where条件试图更新where StudentId=0。在调用函数之前设置该值,您应该可以开始了。

通过这样做,您不需要调用UpdateStudentByID同时传递studentId和student,而只需调用UpdateStudent并传递student。

...
//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);
    }
}

希望这能有所帮助。