![](/img/trans.png)
[英]using backgroundworker in Winforms (C#) with MVP pattern
[英]How to display data from more than one table to my view using MVP pattern in C# winforms?
如何在C#Winforms中使用MVP模式將多個表中的數據顯示到我的視圖中?
說我有下表:
顏色
Table definition: +----------+ | Fruit | +----------+ | Id | | Name | | Color_Id | +----------+ |∞ | |1 +----------+ | Color | +----------+ | Id | | Name | +----------+ Table contents: Fruits +-----+--------+----------+ | Id | Name | Color_Id | +-----+--------+----------+ | 10 | Apple | 70 | | 20 | Orange | 80 | | 30 | Grapes | 90 | +-----+--------+----------+ Colors +-----+--------+ | Id | Name | +-----+--------+ | 70 | Red | | 80 | Orange | | 90 | Violet | +-----+--------+
然后,在我的解決方案中,我為每個表創建了類,即Fruit和Color類,它們具有自己的getter和setter以及代表數據庫中表的其他詳細信息。
然后,我還為“水果”和“顏色”創建了兩個模型。
因此,如果我想創建一個顯示有關Color記錄的視圖,則可以使用為Color創建的模型來檢索顏色的集合(例如List<Color>
)。 如果我使用DataGridView來顯示該記錄,則會得到類似以下的內容:
+-----+--------+
| Id | Name |
+-----+--------+
| 70 | Red |
| 80 | Orange |
| 90 | Violet |
+-----+--------+
對於Fruit記錄,我可以使用與上面相同的方法,但是我需要顯示顏色名稱而不是顏色ID,如下所示:(
+-----+--------+----------+
| Id | Name | Color |
+-----+--------+----------+
| 10 | Apple | Red |
| 20 | Orange | Orange |
| 30 | Grapes | Violet |
+-----+--------+----------+
我想我可以為其創建另一個類並將其命名為“ FruitColor”,然后為其賦予與上面的Fruit類相同的屬性,但是我沒有顏色id屬性,而是將其替換為顏色名稱...但是我我不太確定這是否是MVP中正確的做法。 我以為我應該問你們如何正確做的任何提示...
我沒有在我的項目中使用ORM,因為我想了解如何手動進行操作...但是我也希望與使用ORM有關的任何幫助。 我也剛剛在3周前開始了解MVP,所以我真的很希望能得到任何幫助。
檢索Fruit
,應使用SQL中的JOIN
來查詢顏色:
RETRIEVE f.*, c.name as color_name
FROM Fruits f
INNER JOIN Colors c
ON f.Color_Id = c.Id
然后,將可能已經完成的結果轉換為Fruit
。 但是,這將需要您擴展Fruit
類,使其具有顏色name
變量的string
屬性,或者僅添加包含整體顏色的屬性:
public class Fruit
{
public int Id { get; set; }
public string Name { get; set; }
public Color Color { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.