beijiandingdexua 2024-04-20 22:56 采纳率: 0%
浏览 12

大学生C#遇到问题请求帮助!

编写 WinFons 应用程序,管理学生的基本信息,包括姓名、年龄和成绩。请使用数据库优先的方式创建数据库并生成实体,然后在 WinForms 应用程序中,使用 LINO 查询和操作这些学生信息。要求如下。
(1)使用数据库优先方式创建一个名为Stdent的数据库表,包含姓名、年龄和成绩字段。
(2)使用 Entity Framework Core 将数据库表映射到实体类,
(3)创建一个 WinFonms 界面,显示学生信息的列表,并包含添加、编辑和删除学生亻息的功能。
(4)使用LINQ 查询学生信息,并在界面上显示和操作这些信息。
已经写了一大半了,但是现在bug好多好多

public partial class SY7 : Form
{
    private readonly DBContext c = new DBContext();
    
    public SY7()
    {
        InitializeComponent();
        button1.Click += button1_Click;
        button2.Click += button2_Click;
        studentBindingSource.AddingNew += StudentBindingSource_AddingNew;
        InitStudentData();
        LoadStudentData();
        
    }
    private void StudentBindingSource_AddingNew(object? sender, System.ComponentModel.AddingNewEventArgs e)
    {
        var newStudent = new Student();
        c.Student.Add(newStudent);
        e.NewObject = newStudent;
    }
    private void button2_Click(object sender, EventArgs e)
    {
        c.SaveChanges();
        studentBindingSource.EndEdit();
        
        MessageBox.Show("保存成功");
    }
    private void button1_Click(object sender, EventArgs e)
    {
        studentBindingSource.RemoveCurrent();
        studentBindingSource.EndEdit();
        c.SaveChanges();
    }
    private void InitStudentData()
    {
        var n = c.Student.Count();
        if (n == 0)
        {
            c.Student.Add(new Student { Name = "张三", Age = 20, Score = 90 });
            c.SaveChanges();
        }
    }
    private void LoadStudentData()
    {
        var students = c.Student.ToList();
        studentBindingSource.DataSource = students;
    }
}

数据库的建立代码为

CREATE TABLE [dbo].[Student] (
    [Id]    INT           NOT NULL,
    [Name]  NVARCHAR (50) NULL,
    [Age]   INT           NULL,
    [Score] INT           NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

然后界面是

img


界面是这样的

现在bug有点多 自己输入的数据保存不到数据库中 然后最开始的那个数据在winform中不显示

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-20 22:56
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在实现这个功能时遇到了一些常见的问题。我会帮你解决这些问题。首先,让我们修复保存和加载数据的问题。然后,我们将确保窗体加载时显示初始数据。

    修复保存和加载数据

    你需要在button2_Click事件处理函数中调用SaveChanges()方法来将更改保存到数据库。同时,由于你已经在StudentBindingSource_AddingNew事件处理函数中添加了新的学生对象,所以不需要再次调用Add方法。另外,在InitStudentData方法中,我们可以通过查询数据库是否存在任何学生记录来决定是否需要插入默认数据。以下是修改后的代码:

    using (var context = new DBContext())
    {
        if (!context.Student.Any())
        {
            context.Student.Add(new Student { Name = "张三", Age = 20, Score = 90 });
            context.SaveChanges();
        }
    }
    
    private void button2_Click(object sender, EventArgs e)
    {
        c.SaveChanges(); // 移除这一行,因为我们在StudentBindingSource_AddingNew事件中已保存新对象
        studentBindingSource.EndEdit();
    
        MessageBox.Show("保存成功");
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        studentBindingSource.RemoveCurrent();
        studentBindingSource.EndEdit();
        c.SaveChanges();
    }
    

    确保窗体加载时显示初始数据

    LoadStudentData方法中,你已经正确地从数据库加载了所有学生记录并将其绑定到studentBindingSource。然而,为了确保窗体加载时立即显示数据,你需要在Form_Load事件处理函数中调用LoadStudentData方法。这里是完整的Form1_Load方法:

    private void Form1_Load(object sender, EventArgs e)
    {
        LoadStudentData();
    }
    

    现在你应该能够在添加新学生、编辑现有学生和删除学生时看到数据被保存到数据库,并且窗体加载时会显示初始学生数据。如果你还有其他问题或错误,可以继续提问,我会尽力提供帮助。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月20日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路