【发布时间】:2010-03-23 14:19:38
【问题描述】:
我有一个包含用户的数据库。 用户拥有物品。
这些项目可以主动更改。 您如何访问集合类型格式的项目? 对于用户,我在实例化时填写所有用户属性。 如果我在实例化时加载用户的项目,并且项目发生了变化, 他们会有旧数据。
我在想,也许我需要一个 ItemCollection 类,并在用户类之外拥有一个字段/属性,这样可以遍历所有用户的项目,我可以使用 foreach 循环。
所以,我的问题是,使用某种集合从数据库访问项目的最佳实践/最佳方式是什么?在访问特定的Item时,它需要获取最新的数据库信息,并且当用户执行foreach循环时,最新的item信息必须是可用的。
即我正在尝试做的事情
Console.WriteLine(User.Items[3].ID); returns 5.
//this updates the item information and saves it to the database.
User.Items[3].ID = 13;
//Add a new item to the database.
User.Items.Add(new Item { id = 17});
foreach (Item item in User.Items) {
//this would traverse all items in the database.
//not some cached copy at the time of instantiation of the user.
}
编辑:对不起,我写的这个问题有点错误。 我目前正在使用 Linq,但我有类映射到业务对象。 当我对业务对象进行遍历时,我希望它转到 Linq 数据上下文并获取信息。
当我实现一个实现接口 IList 的新类“ItemCollection”时, 我需要怎么做才能让它返回项目?
使用 User.Items[3],在 public Item 的 this[int index] 方法中实现。 index方法是否应该使用linq.Skip操作符来获取数据库中item的索引?
我只是对将业务对象集合映射到数据库感到有些困惑。
【问题讨论】:
-
你在使用实体框架吗?
-
不,但我使用的是 Linq to SQL
标签: c# database caching collections class-design