我必須使用一個類作為一個學校專案的 c# 中的 winforms 專案的資料庫,但我們還沒有學習 mySQL。如何在沒有 mySQL 的情況下將類用作資料庫?
uj5u.com熱心網友回復:
為了提防不喜歡,我想建議使用Singleton pattern創建一個類,將一些存盤List<T>為“資料庫表”。也可能有幾個Lists,各一個將代表不同的“資料庫表”( public List<T> Customers,public List<T> Sales等)。
public sealed class RuntimeDatabase
{
private List<Person> persons = new List<Person>();
// List used as database table
public List<Person> Persons
{
get => persons;
private set => persons = value;
}
// Singleton
private static readonly RuntimeDatabase instance = new RuntimeDatabase();
public static RuntimeDatabase Instance => instance;
private RuntimeDatabase() { }
}
您可以在其他地方使用它:
public partial class MainWindow : Window
{
private readonly RuntimeDatabase DB = RuntimeDatabase.Instance;
private void GetPersons()
{
dataGrid.ItemsSource = DB.Persons;
}
private void AddPerson()
{
Person p = new Person();
p.Name = "John Wick";
DB.Persons.Add(p);
}
private void RemovePerson()
{
Person p = new Person();
p.Name = "John Wick";
DB.Persons.Remove(p);
}
}
或者創建自定義的方法,包裝RuntimeDatabase類模仿Insert,Update,Delete,Truncate,Select等行動。
草圖:
public sealed class RuntimeDatabase
{
//...
public List<Person> Select(Func<Person, bool> func)
{
return persons.Where(func).ToList();
}
public void Insert(Person person)
{
persons.Add(person);
}
public void Update(Person person)
{
persons = persons.Select(x =>
{
if (x.ID == person.ID) // It's preferred to have an ID property to unique each Person (some kind of Primary Key)
{
x.SomeProperty = person.SomeProperty;
}
return x;
}).ToList();
}
public int Delete(Predicate<Person> predicate)
{
return persons.RemoveAll(predicate); // Count of removed elements
}
public void Truncate()
{
persons.Clear();
}
}
當然,您可以創建一個方法,在應用程式退出之前將其保存到某個檔案中,并在應用程式啟動時重新加載。
Person 示例中使用的是簡單的模型類:
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string SomeProperty { get; set; }
}
隨意向我扔泥巴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318260.html
