MSSQL Compact Edition - Visual Studio 生成的数据集与我自己使用 SqlCommand 等或其他可用选项的自定义代码?
Posted
技术标签:
【中文标题】MSSQL Compact Edition - Visual Studio 生成的数据集与我自己使用 SqlCommand 等或其他可用选项的自定义代码?【英文标题】:MSSQL Compact Edition - Visual Studio generated datasets vs. my own custom code using SqlCommand etc. or some other options available? 【发布时间】:2010-10-27 12:10:25 【问题描述】:抱歉,这个问题的标题可能不太清楚,但我会尽力解释得更好,所以请耐心等待 :)
我们在装有 Windows Mobile 的设备上安装了一些 C# 应用程序,它使用 MSSQL CE 数据库来存储其数据(我想这并不奇怪)。问题是 db 架构中的任何更改(新列、列中不同类型的数据等)都会强制 VS 生成的使用该 db 的类发生更改。也许我不知道如何正确使用它,但我感觉这些类有些繁重,也许我自己的基于 SqlCommand 对象的自定义代码会更方便一些,适合维护。此外,初始化和从 db 获取数据的时间相当长,至少在第一次使用特定表时,我不知道这是不是优化(生成)代码的影响,还是它的工作方式。毕竟,Visual Studio 生成的底层类实际上是在工作的简单 SqlCommands,所以它可能只是我的 NIH 综合症而不是真正的问题。
那么,对这件事有什么想法吗?
请不要将这个问题作为寻求意见而不是真正的解决方案而丢弃,因为从我的角度来看,要么我错了,需要更正,要么 VS 生成的代码臃肿且定制的直接一堆命令(或在数据库中获取和保存数据的其他方式)在执行时间成本和相对更容易的维护和开发方面是更好的解决方案。
【问题讨论】:
【参考方案1】:看看http://orm.codeplex.com
【讨论】:
【参考方案2】:这是一个普遍的问题,由于架构更改而导致维护成本
也许您可以使用实体框架作为您的 ORM 或 linq2sql。
我会怀疑使用 sqlcommand 对象来简化您的生活。由于架构更改未找到所有必要的更改,您将只是从花时间更新架构转移到花时间跟踪错误。听起来你的行为是强类型的……如果是这样,那确实是更好的工作方式。您希望您的错误在编译时可见,因为它让生活变得如此轻松。
如果您使用带有 CE id 的 ORM,强烈建议您使用它 - 它们让您的生活变得更加轻松。选项可能是实体框架、linq2sql 或 nhibernate。
【讨论】:
.NET Compact Framework 不支持 LINQ 2 SQL、EF 和 Nhibernate 这就是问题所在,当涉及到我们在普通 .net 中认为理所当然的某些功能时,CF 非常有限。以上是关于MSSQL Compact Edition - Visual Studio 生成的数据集与我自己使用 SqlCommand 等或其他可用选项的自定义代码?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server Compact Edition 中的 NHibernate 期货
SQL Server Compact Edition 12 小时时间格式
SQL Server Compact Edition 查询日志
SQL Server Compact Edition - 序列列?