Làm cách nào để thay đổi chuỗi kết nối thành thực thể trong winform C# và thay đổi kết nối bên trong mã winform

lập trình


     `i have this code how can change the connection sql to Entity like NorthwindEntity`

```
> using System;
   using System.Collections.Generic;
   using System.ComponentModel;
   using System.Drawing;
   using System.Data;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using System.Windows.Forms;

   namespace Attendance_Management_System.PAL.User_Control
{
    public partial class UserControlAttendance : UserControl
    {
        private string sql = @"Data Source = .\SQLEXPRESS;
                            Initial Catalog = Attendance_Management_System;
                            Integrated Security = True;";
        private bool okay;

        public UserControlAttendance()
        {
            InitializeComponent();
            dataGridViewMarkAttendance.Columns["Column1"].Visible = false;
            dataGridViewMarkAttendance.Columns["Column5"].Visible = false;
        }

        private void comboBoxClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(Attendance.Attendance.IsMarkAttendance(dateTimePickerDate.Text, comboBoxClass.SelectedItem.ToString(), sql))
            {
                Attendance.Attendance.DisplayAndSearchAllData("SELECT Student_Table.Student_ID, Student_Name, Student_Reg, Attendance_Status FROM Student_Table INNER JOIN Attendance_Table ON Student_Table.Student_ID = Attendance_Table.Student_ID INNER JOIN Class_Table ON Class_Table.Class_ID = Student_Table.Class_ID WHERE Attendance_Date = '" + dateTimePickerDate.Text + "' AND Class_Name = '" + comboBoxClass.SelectedItem.ToString() + "';", dataGridViewMarkAttendance, sql);
                okay = true;
            }
            else
            {
                Attendance.Attendance.DisplayAndSearchAllData("SELECT Student_ID, Student_Name, Student_Reg FROM Student_Table INNER JOIN Class_Table ON Class_Table.Class_ID = Student_Table.Class_ID WHERE Class_Name = '" + comboBoxClass.SelectedItem.ToString() + "';", dataGridViewMarkAttendance, sql);
                okay = false;
            }
        }

        private void tabPageMarkAttendance_Leave(object sender, EventArgs e)
        {
            if (comboBoxClass.SelectedIndex != -1)
            {
                if (comboBoxClass.SelectedIndex != -1)
                {
                    string status;
                    if (Attendance.Attendance.IsMarkAttendance(dateTimePickerDate.Text, comboBoxClass.SelectedItem.ToString(), sql))
                    {
                        foreach (DataGridViewRow row in dataGridViewMarkAttendance.Rows)
                        {
                            if (Convert.ToBoolean(row.Cells["Column4"].EditedFormattedValue) == true)
                                status = "Present";
                            else
                                status = "Absent";
                            Attendance.Attendance.UpdateAttendance(row.Cells["Column1"].Value.ToString(), dateTimePickerDate.Text, status, sql);
                        }
                    }
                    else
                    {
                        foreach (DataGridViewRow row in dataGridViewMarkAttendance.Rows)
                        {
                            if (Convert.ToBoolean(row.Cells["Column4"].EditedFormattedValue) == true)
                                status = "Present";
                            else
                                status = "Absent";
                            Attendance.Attendance.MarkAttendance(row.Cells["Column1"].Value.ToString(), dateTimePickerDate.Text, status, sql);
                        }
                    }
                }
            }
        }

        private void dataGridViewMarkAttendance_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (comboBoxClass.SelectedIndex != -1)
            {
                if (Attendance.Attendance.IsMarkAttendance(dateTimePickerDate.Text, comboBoxClass.SelectedItem.ToString(), sql) && okay)
                {
                    foreach (DataGridViewRow row in dataGridViewMarkAttendance.Rows)
                    {
                        if (row.Cells["Column5"].Value.ToString() == "Present")
                            row.Cells["Column4"].Value = true;
                        else
                            row.Cells["Column4"].Value = false;
                    }
                }
            }
        }

        private void comboBoxClass_Click(object sender, EventArgs e)
        {
            comboBoxClass.Items.Clear();
            Attendance.Attendance.FillComboBox("SELECT DISTINCT(Class_Name) FROM Class_Table;", comboBoxClass, sql);
        }
    }
}
```




     `i try this in combobox it,s working`

```
    using(Attendance_Management_SystemEntities db=new Attendance_Management_SystemEntities())
            {
                db.Configuration.ProxyCreationEnabled = false;
                comboBoxClass.DataSource = db.Class_Table.ToList();
                comboBoxClass.ValueMember = "Class_ID";
                comboBoxClass.DisplayMember = "Class_Name";
            }
```







`but in private void comboBoxClass_SelectedIndexChanged not find way to do it`

What I have tried:

i try this in 
<pre>private void ucAttendance_Load(object sender, EventArgs e)
        {
            using(Attendance_Management_SystemEntities db=new Attendance_Management_SystemEntities())
            {
                db.Configuration.ProxyCreationEnabled = false;
                comboBoxClass.DataSource = db.Class_Table.ToList();
                comboBoxClass.ValueMember = "Class_ID";
                comboBoxClass.DisplayMember = "Class_Name";
            }
        }

hoạt động tốt nhưng trong combobox không hoạt động db

private void comboBoxClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Attendance.Attendance.IsMarkAttendance(dTPickerAttend.Text, comboBoxClass.SelectedItem.ToString(), ))
            {
                Attendance.Attendance.DisplayAndSearchAllData("SELECT Student_Table.Student_ID, Student_Name, Student_Reg, Attendance_Status FROM Student_Table INNER JOIN Attendance_Table ON Student_Table.Student_ID = Attendance_Table.Student_ID INNER JOIN Class_Table ON Class_Table.Class_ID = Student_Table.Class_ID WHERE Attendance_Date = '" + dTPickerAttend.Text + "' AND Class_Name = '" + comboBoxClass.SelectedItem.ToString() + "';", dataGridViewMarkAttendance, sql);
                //okay = true;
            }
            else
            {
                Attendance.Attendance.DisplayAndSearchAllData("SELECT Student_ID, Student_Name, Student_Reg FROM Student_Table INNER JOIN Class_Table ON Class_Table.Class_ID = Student_Table.Class_ID WHERE Class_Name = '" + comboBoxClass.SelectedItem.ToString() + "';", dataGridViewMarkAttendance, sql);
                //okay = false;
            }
        }

Giải pháp 1

C#
private string sql = @"Data Source = .\SQLEXPRESS;
Initial Catalog = Attendance_Management_System;
Integrated Security = True;";

Đừng bao giờ làm điều đó: nó được gọi là “mã hóa cứng” và điều đó có nghĩa là bạn phải thay đổi nguồn ứng dụng của mình giữa nhà phát triển và sản xuất – nghĩa là bạn phát hành mã chưa được kiểm tra.

Thay vào đó, hãy luôn sử dụng tệp cấu hình để lưu trữ những thứ như vậy: khi bạn phát hành mã, tệp cấu hình sẽ không thay đổi và sẽ “chỉ hoạt động”. Bạn có thể sử dụng tệp Cài đặt .NET, sử dụng JSON hoặc XML hoặc viết mã thủ công của riêng bạn – nhưng cách tôi làm được hiển thị ở đây: Lưu trữ phiên bản – Một cách đơn giản để chia sẻ dữ liệu cấu hình giữa các ứng dụng[^] – có thể hơi quá mức cần thiết đối với ứng dụng của bạn nhưng nó chỉ ra cách để quản lý ứng dụng đó.

コメント

タイトルとURLをコピーしました