0

たとえば、クラス (ユーザー) と 30 個の値 (プロパティ) があり、そのうちの 10 個は DataGridView に列として表示されますが、その他 (各ユーザーの設定 (たとえば、他の BL 値などの要求を行うためのタイムアウト)) は約 20 個です。値を XML ファイルにまとめて保存したいだけです (シリアライズ/デシリアライズできます)。

だから、私はこれが表示されていない20の値をどこにでも保存する必要があります.これのベストプラクティスは何ですか? DataGridView の非表示の列ですか、それとも何か他のものですか?

わかりましたので、一緒に保管しなければなりませんが、どこに保管できますか?保存されたデータの2つのブロック(ユーザー[10個の値] + ユーザー[20個の値])の間の関係を作成して、その後XMLでシリアル化する必要がありますか?

4

2 に答える 2

0

データキャッシングの使用は、シーンリオに役立ちます。

概要:

データキャッシングとは、すばやくアクセスできるようにデータをメモリに保存することです。通常、(パフォーマンスの観点から)取得にコストがかかる情報はキャッシュに保存されます。Webアプリケーション環境のキャッシュに格納される最も一般的なアイテムの1つは、一般的に表示されるデータベース値です。このような情報をキャッシュすることにより、繰り返されるデータベース呼び出しに依存するのではなく、Webサーバーとデータベースサーバーのシステムリソースに対する需要が減少し、Webアプリケーションのスケーラビリティが向上します。マイクロソフトが雄弁に言っているように、

「キャッシングは、頻繁にアクセスされるデータや高価なデータをメモリに保持することでパフォーマンスを向上させるためにコンピューティングで広く使用されている手法です。Webアプリケーションのコンテキストでは、キャッシングを使用して、HTTPリクエスト間でページやデータを保持し、再作成する費用をかけずに再利用します。 。」

asp.netでデータキャッシュを使用する方法のリンクを参照してください

http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-in-the-architecture-cs

http://geekswithblogs.net/Rhames/archive/2011/01/10/using-the-asp.net-cache-to-cache-data-in-a-model.aspx

http://blog.ntotten.com/2011/04/29/caching-data-in-asp-net-applications/

アップデート:

データベースがなく、winformsを使用している場合は、リストに格納し、linqクエリを使用して関係を作成します。

以下は、結合とリンクの使用方法を示すリンクです。

http://weblogs.asp.net/rajbk/archive/2010/03/12/joins-in-linq-to-sql.aspx

http://geekswithblogs.net/WillSmith/archive/2008/05/28/linq-joins-and-groupings.aspx

于 2012-11-14T10:29:14.973 に答える
0

私が頻繁に使用してきたベストプラクティスは、または任意のタイプのようなコレクション内のすべてのデータを取得し、それを持っているあなたにバインドすることです. この場合、デザイナーまたはコードに特定の列を手動で追加する必要があります。コードのアプローチは次のようになります。List, DataTable, EntityCollection, ...IEnumerableDataGridViewAutoGenerateColumns = falseDataGridView

// say this is your User class with 9 fields
public class User
{
    public string Name { get; set; }
    public string LastName { get; set; }
    public string FatherName { get; set; }
    public string Telephone { get; set; }
    public string Mobile { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastLoginDate { get; set; }
}
// and your Form1 class would be like this
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        dataGridView1.AutoGenerateColumns = false;
        // say you want to show, only the first 5 fields of your Entity
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Name", DataPropertyName = "Name", Width=100 });
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Last Name", DataPropertyName = "LastName", Width = 100 });
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Father's Name", DataPropertyName = "FatherName" });
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Telephone", DataPropertyName = "Tel", Width = 50 });
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "Mobile", DataPropertyName = "Mobile", Width = 50 });
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        List<User> list = new List<User>();

        list.Add(new User { Name="aaa", LastName="bbbb", FatherName="ccc", Tel="01111", Mobile="099999" });

        dataGridView1.DataSource = list.ToArray();
    }
}                        
于 2012-11-14T11:17:51.970 に答える