0

例如,我有一个类(用户)和 30 个值(属性),其中 10 个我在 DataGridView 中显示为列,但其他(每个用户的设置(例如,任何其他 BL 值发出请求的超时))大约 20值,我只想一起存储在 XML 文件中(我可以进行序列化/反序列化)。

所以,我需要存储任何没有显示 20 个值的地方,最好的做法是什么?它是 DataGridView 中的隐藏列还是其他任何内容?

据我所知,我必须将它存储在一起,但我可以在哪里做呢?我是否应该在两个存储数据块(用户 [10 值] + 用户 [20 值])之间建立关系,以便在 XML 序列化之后使它们?

4

2 回答 2

0

数据缓存的使用将有助于您的场景。

概括:

数据缓存是将数据存储在内存中以便快速访问。通常,获取成本高的信息(就性能而言)存储在缓存中。在 Web 应用程序环境中存储在缓存中的更常见的项目之一是通常显示的数据库值。通过缓存这些信息,而不是依赖重复的数据库调用,减少了对 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 查询建立关系。

以下是显示如何使用连接和 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, ...或任何IEnumerable类型,并将其绑定到您的DataGridViewwhich has AutoGenerateColumns = false. 在这种情况下,您应该手动将特定列添加到DataGridView设计器或代码中。代码方法是这样的:

// 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 回答