我有一個MySQL數據庫與Items
和Stores
表,查找表ItemStores
,像這樣:如何組織來自數據庫的數據?
CREATE TABLE IF NOT EXISTS Items (
itemId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(256) NOT NULL DEFAULT '',
priceBeforeTax DECIMAL(10,2) NOT NULL,
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS Stores (
storeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
storeName VARCHAR(128) NOT NULL,
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS ItemStores (
storeId INT NOT NULL REFERENCES Stores(storeId),
itemId INT NOT NULL REFERENCES Items(itemId),
quantity INT NOT NULL
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
應用商店的物品和商店在ObservableCollections
S的Item
和Store
對象,而一些WPF控件綁定到這些ObservableCollections
S,就像這樣:
public class Store
{
public int storeId { get; set; }
public string storeName { get; set; }
public override string ToString()
{
return this.branchName;
}
}
private static ObservableCollection<Store> _stores = new ObservableCollection<Store>();
public static ObservableCollection<Store> Stores
{
get { return _stores; }
}
public class Item
{
public int itemId { get; set; }
public string description { get; set; }
public decimal priceBeforeTax { get; set; }
public override string ToString()
{
return this.description;
}
}
private static ObservableCollection<Item> _items = new ObservableCollection<Item>();
public static ObservableCollection<Item> Items
{
get { return _items; }
}
現在我的困境如何分配ItemStores
數據中心。我正在考慮在每個Item
中有一個HashTable,它將storeID
映射到每個Store
中的項目數量。假如我偶爾會通過itemId
搜索Item
,有沒有更好的方法來繪製它?我已經運行了一個SELECT * FROM Items
來填充ObservableCollection,我擔心運行另一個查詢來從每個商店獲取數量將會真正影響MySQL。 A JOIN
不會幫助,因爲我不知道將返回多少商店併爲同一項目返回多行(每個商店都有一行)會使數據進入ObservableCollection變得非常痛苦。
你是指NHibernate? – dotancohen 2012-03-12 00:27:22
或任何其他支持MySql的。 – 2012-03-12 00:29:25