Синхронизация datagridview (WinForms) с базой даных Microsoft SQL Server
Есть форма на которой размещен dataGridView, написан метод апгреда UpdateDataGridView(). Есть клас DB в котором методы подключения и отключения. Клас Menu в котором метод List GetRestaurants(), который возвращает лист, который нужно вывести в датагрид. Как вызывать метод UpdateDataGridView(), при любом именении в таблице в БД?
internal class DB
{
static string ServerConnect = "Connect_Server";
static SqlConnection msconnect;
static public SqlCommand msCommand;
static public SqlDependency dependency;
static public bool ConnectionDB()
{
try
{
msconnect = new SqlConnection(ServerConnect);
msconnect.Open();
msCommand = new SqlCommand();
msCommand.Connection = msconnect;
SqlDependency.Start(ServerConnect);
return true;
}
catch
{
return false;
}
}
static public void CloseDB()
{
if (msconnect != null)
{
msconnect.Close();
}
SqlDependency.Stop(ServerConnect);
}
}
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
DB.ConnectionDB();
}
private void MainForm_Load(object sender, EventArgs e)
{
UpdateDataGridView();
}
private void UpdateDataGridViewRestaurants()
{
dataGridView1.Rows.Clear();
List<Restaurants> restaurants = Menu.GetRestaurants();
foreach (var item in restaurants)
{
/*тут вывод из листа в датагрид*/
}
}
public static class Menu
{
public static List<Restaurant> GetRestaurants()
{
List<Restaurant> restaurants = new List<Restaurant>();
DB.ConnectionDB();
try
{
string query = "SELECT id_restaurant, Name, Address, FoodType FROM dbo.restaurant WHERE RestaurantStatus = 'активний'";
DB.msCommand.Parameters.Clear();
DB.msCommand.CommandText = query;
using (var reader = DB.msCommand.ExecuteReader())
{
while (reader.Read())
{
int id = Convert.ToInt32(reader["id_restaurant"]);
string name = reader["Name"].ToString();
string address = reader["Address"].ToString();
string foodType = reader["FoodType"].ToString();
Restaurant restaurant = new Restaurant(id, name, address, foodType, "активний");
restaurants.Add(restaurant);
}
}
}
catch
{
return null;
}
return restaurants;
}
}