Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分技术。如果您不熟悉Dataset,那么现在可能不是开始使用它的时候。_C#_Sql - Fatal编程技术网

C# 分技术。如果您不熟悉Dataset,那么现在可能不是开始使用它的时候。

C# 分技术。如果您不熟悉Dataset,那么现在可能不是开始使用它的时候。,c#,sql,C#,Sql,但是,如果您有可以在许多不同应用程序中使用的业务逻辑(存储过程),该怎么办呢。 所以这取决于:如果您使用不同的后端存储为不同的用户制作应用程序,或者您为不经常更改后端存储的用户制作许多应用程序。 数据库的完整性和规则独立于应用程序(内部或外包)是非常重要的。LINQ到SQL、NHibernate、Micro-ORMs或普通的旧ADO.net怎么样?你的问题很大,几乎无法回答。数据访问层当然是任何数据驱动应用程序的关键部分,但它太大了,无法在一个单一的答案中涵盖。我建议投资几本书。目前我正在阅读L

但是,如果您有可以在许多不同应用程序中使用的业务逻辑(存储过程),该怎么办呢。 所以这取决于:如果您使用不同的后端存储为不同的用户制作应用程序,或者您为不经常更改后端存储的用户制作许多应用程序。
数据库的完整性和规则独立于应用程序(内部或外包)是非常重要的。

LINQ到SQL、NHibernate、Micro-ORMs或普通的旧ADO.net怎么样?你的问题很大,几乎无法回答。数据访问层当然是任何数据驱动应用程序的关键部分,但它太大了,无法在一个单一的答案中涵盖。我建议投资几本书。目前我正在阅读LINQ,但要使用LINQ查询我的数据库,我需要访问我的数据库,我需要弄清楚是使用DataSet还是EDM。我理解这是一个太大的问题,无法在一个单一的答案中涵盖,但我想知道是否有人能给我一些建议,我可以继续。感谢您的及时回复。我要补充的唯一一点是,如果不考虑数据访问层如何与体系结构的其余部分相适应,您就无法真正决定数据访问层。我已经尝试了大多数选项,在数据访问层的最后,我只是通过ADO.net使用普通SQL(无可否认,所有这些都是通过代码生成系统生成的)。它快速、干净,不会将您的应用程序与当今的fad技术捆绑在一起。此外,我的理解是ADO.NET是.NET中所有数据访问的万能工具,并且DataSet/EDF在层次结构中更为底层。詹姆斯,你说过我为什么不使用普通的ADO.NET。看来我是被误导了。我的意思是,仅仅使用普通的旧ADO.Net,即使用连接对象来执行SQL。数据集是除此之外的进一步抽象,我建议只使用DataReader,因为这是您可以达到的最低级别。其他一切都会在您和数据库之间造成障碍。但这只是我的观点——有些人喜欢有分量的抽象概念。如果你出于架构的原因使用它们,那很好——但我认为我们经常使用它们,因为它们“容易”进入——它们是——但很难离开。谢谢KAJ,我会检查线程,看看我能从中得到什么。我认为我的问题是我知道的太少或太混乱,无法清楚地解释我的问题。啊!!论文的奇迹!“怎么了”?该线程在EF4发布前大约2年“继续”运行!EF 4.3几周前刚刚发布,包括一些非常强大的功能(提示:代码优先&迁移)。值得注意的是:“继续”没有出现在我的答案中(我还没有编辑掉:-)。当我看到一个看起来非常合理的查询生成一个超过9000行的SQL查询时,我就将EF删除了!在简单的场景中,这很好,但它声称要处理更复杂的映射,而实际上它无法处理这些映射,或者它处理得非常糟糕。我认为主要的缺陷在于LINQ to Entities——一旦他们解决了这个问题,我可能会再看一眼。我想看看这个查询和生成的SQL。我使用的是ef 5.0,基于SQL探查器,我的表现似乎很好。@James:我会回应soadyp的评论-很可能你在ef代码中遗漏了一些基本的东西,因为它将生成的SQL膨胀到了这个程度。你可以在这个问题中看到代码:我最终设法修复了这个特定的查询,但是没有警告原始查询将生成多屏幕SQL查询。我没有设法解决其他类似的问题,结果被EF甩了。然而,我认为大多数问题都与每个实体的多表模型有关。我不会这样做。在数据层存储业务规则是一个巨大的错误。当决定将后端存储解决方案从MSSQL更改为Oracle、云解决方案或NoSQL时,会发生什么情况?关于业务对象的要点是控制如何获取、验证数据并将其保存到后端存储。存储库模式更适合于抽象存储解决方案。然后,您的业务对象可以使用回购协议。将简单的数据CRUD操作留给数据层,将业务规则留给业务对象。+1比其他任何人都能更好地回答这个问题,但我很想阅读更多关于实际差异的内容。以我的拙见,主要的区别在于,数据集是一个内存中的数据库,您可以从任何源加载它。执行查询时,它们会针对内存中的数据运行。EDO更接近EF,因为据我所知,查询总是针对原始源数据库运行。对于数据集,您可能会发现自己正在数据库中编写视图,以检索数据子集,这是出于性能原因。对于江户来说,这是不必要的。江户是什么?你是说艾德吗?