C# 列表到数据库
我可能离这里太远了,这个问题可能有点主观,但不管怎样,还是这样 目前,我使用C# 列表到数据库,c#,database,orm,data-access-layer,C#,Database,Orm,Data Access Layer,我可能离这里太远了,这个问题可能有点主观,但不管怎样,还是这样 目前,我使用IList将数据库中的信息缓存在内存中,这样我就可以使用LINQ从数据库中查询信息。我有一个ORM'ish层,我已经在这里写了一些问题的帮助下,以便轻松地从数据库查询我需要的信息。例如: IList<Customer> customers = DB.GetDataTable("Select * FROM Customers").ToList<Customer>(); IList customer
IList
将数据库中的信息缓存在内存中,这样我就可以使用LINQ
从数据库中查询信息。我有一个ORM'ish层,我已经在这里写了一些问题的帮助下,以便轻松地从数据库查询我需要的信息。例如:
IList<Customer> customers = DB.GetDataTable("Select * FROM Customers").ToList<Customer>();
IList customers=DB.GetDataTable(“从客户中选择*).ToList();
它一直运作良好。我还有扩展方法可以对这些列表中的单个项目进行CRUD更新:
DB.Update<Customer>(customers(0));
DB.Update(客户(0));
再次工作得很好
现在在我的应用程序的GUI层中,特别是在绑定用户编辑数据的DataGridView
时,我发现自己绕过了这个DAL层,直接在表单中使用TableAdapters
,这打破了我觉得有点奇怪的分层架构。我还发现,我在这里使用TableAdapters
,在那里使用ILists
,在我的代码中有不同的标准,我想将它们合并为一个标准
理想情况下,我希望能够绑定到这些列表,然后让DAL为我更新列表的“脏”数据。对我来说,这一过程将涉及以下方面:
Delete FROM*WHERE ID NOT IN('all ID IN list')
查询TableAdapter
中如何处理这个问题,但我可以看到,随着列表中项目的增加,这个方法的性能显著下降,而且下降得相当快
所以我的问题是:
是否有更简单的方法将列表提交到数据库?请注意“提交”一词,因为它可能是插入/更新或删除
我是否应该转换为DataTable
?e、 g
我相信一些更高级的ORM会执行这种类型的操作,但是有没有小型ORM(例如dapper/Petapoco/Simple.data等)可以为我执行这种操作?我希望保持它的简单性(就像我当前的DAL一样)和灵活性(如果它能满足我的需要,我不介意编写SQL)
目前,我使用IList将数据库中的信息缓存在内存中,以便使用LINQ从中查询信息
Linq还有一个部门叫Linq to Datasets,所以这不是一个令人信服的理由
最好决定你真正想要/需要什么:
- 一个完整的类ORM实体框架
- 将数据集与数据适配器一起使用
- 使用基本ADO.NET(DataReader和List)并实现您自己的更改跟踪
你可以在一定程度上混合它们,但正如你所指出的,最好选择一种 谢谢亨克,我没有意识到我可以绕过整个缓存列表。所以我想我可以使用数据集来存储缓存的信息,但仍然可以映射到POCO,以便在需要时检索信息。。。也许ORM是最好的这里有一个令人信服的原因,你不使用功能丰富的ORM吗?你所做的听起来有点离经叛道。是的,我开始认为,从头开始建立一个定制ORM可能是最好的选择,这很有诱惑力,也很容易陷入其中。您现在正处于转折点,如果可以的话,最好停止开发您的定制ORM,使用真正的ORM。现代的ORM已经很好地解决了很多复杂的问题,重新设计这个轮子不太可能符合客户的最佳利益。