c# oracle orm,关于c#:ORM我可以选择哪些标准?-程序员宅基地

技术标签: c# oracle orm  

问:这个问题是关于如何确定或选择Web应用程序的便捷ORM。

当开始一个新的Web应用程序时,对于我的项目或案例(Web应用程序),我认为一个特定的ORM优于另一个ORM的标准是什么?

我的问题的另一部分:当我启动任何Web应用程序时,我使用三层:

DB层(包含

连接,并处理CRUD

操作)

Managers层(数据访问

层)上的每个表的类

db(与

上一层)它包含CRUD

特定表的操作

以及其他必需的操作。

接口层

我使用对象数据源。是否被认为是ORM(作为一个概念),或者在理解这个概念时我错了。

注意:我仍然是该领域的初学者,并且每天我都学习有关Web开发的更多信息。

请我对此进行解释和建议。

提前致谢。

您使用哪个DBMS?

我经常使用SQL Server,但有时我使用mysql或INFORMATIONIX。

我只使用linq2sql。据我所知linq2sql仅支持MSSQL。

实体框架是一个很好的起点,特别是对于SQL Server

您是否以S#arp体系结构为例来说明您的体系结构?在我的项目中,我通常使用类似它们的东西。

哦,我希望人们不会建议S#arp Architecture,但它的失败。

@Phill,以前没有使用过S#arp,但是为什么您认为它失败了?有兴趣知道。

只会引起更多的问题,而无法解决。尝试在几个项目上使用它,然后将其完全撕掉,然后重新开始(尽我们所能)。知道也有其他人遇到问题,最终围绕S#arp进行设计,因为它所做的事情与他们所需的有所不同。我也不喜欢自动映射,我更喜欢显式映射所有内容。多数民众赞成在个人偏好。

我也不想在项目中使用s#arp库...您可以使用自己喜欢的ORM为具体项目编写自己的解决方案,而s#arp可以作为示例。而且我不能说s#arp失败-在许多项目中它的表现都很好...

我个人从来都不是任何Microsoft ORM解决方案的忠实拥护者,我使用sql服务器并手动编码我的实体,以及从db获取数据并填充实体的代码,我使用存储的proc进行数据的CRUD操作, db方法在需要的地方获取事务对象,如果不为null,则在事务上运行命令。编写代码很麻烦,但实际上易于维护和管理。

@ just_name,linq2sql不是一个好选择,在linq2sql的EF泄漏中解决的EF也非常易于使用。总之,如果仅依靠linq会遇到很多问题,那么linq abd很难在linq2sql和EF中同时处理linq2sql和EF中的批处理更新,但是使用本机查询很容易。

至于ORM,一切都与味道有关。 nhibernate和Entity框架是最常见的框架。

口味,我认为有一些标准,我问他们以及有关sql到linq的问题。

标准是最适合您的需求的。 我是Subsonic风扇,虽然有时我需要为此做一些额外的工作,但我还是喜欢它。

您不会找到具体的选择标准-这是口味和偏好的问题,但是您可以在此处找到比较特征

我将Devart LinqConnect用于中小型项目(尤其是对于Web项目),并将Entity Framework用于大型项目。这些产品既方便又灵活,可让您快速入门。 LinqConnect包括允许与Oracle,MySQL,PostgreSQL,SQLite一起使用的提供程序。我使用第三方提供程序进行实体框架自定义。

关于简单的数据库访问,似乎有很多意见认为哪种是访问数据库的最佳方法。

我目前正在使用NHibernate,它在MS Sql和MySql中非常有效。我在这里找到了一个博客条目,该条目显示了如何使用Nhibernate连接到MYSQL。

对我而言,决定性因素是查看您将要使用的数据库,然后从那里进行决策。 Scott Guthrie宣布了使用实体框架版本4的Code First框架。虽然我知道Entity Framework 4.0可与Mysql一起使用(链接),但是我不确定Code First。可以在这里找到Code First开发的教程。

最终,我认为他们都差不多完成了相同的工作,尽管如果我开始研究ORM并希望简单一些,我可能会选择Code First方法,因为它看起来确实很容易。但是我没有经验。我只读过它。

希望这可以帮助。

对于Microsoft世界,坚持使用ado.net实体框架

对于开源世界,请坚持使用nhibernate。

我正在阅读冬眠的人写的一本关于冬眠的书,从广义上讲,任何将关系模型映射到对象模型(例如将外键转换为包含的对象)的东西都是ORM。

作者将ORM放在不同的类别中,例如Nhibernate属于完整ORM的类别,它在运行时为ex。生成SQL。

其他一些工具,例如LLBGen,需要通过连接到数据库来创建静态dll,然后再使用它们。

选择ORM时,应该查看用户群,如果ORM是活动的,例如Hibernate的最新版本和快速错误修复,那么Hibernate可能是使用最广泛的用户,.net中有Fluent Nhibernate可以配置没有xml文件,休眠状态为此使用带注释的类。

我个人建议您使用基于Hibernate的ORM,ROR活动记录中的标准是我想...

最著名的是nhibernate和EF,就我个人而言,我更喜欢EF,它的速度要比nhibernate更好(通过linq),对于使用EF,我认为Code First是最有用的启动程序。

对于选择哪个ORM(在EF和nhibernate之间),您可以查看对nhibernate熟悉的Ayende Rahien的博客,他在这篇文章中说nhibernate的成熟度更好,但是linq2EF比nhibernate更好,我可以给您的简单示例是:

您有2级主细节,在nhibernate中,您应该执行hql从详细项目中检索具有特定条件的项目,但是在EF中,您可以简单地完成它;此外,在EF中,我们提供了可以解决问题的实体功能,并且我希望它将来会更有用。

请注意,在Ayendes博客文章的底部,他指出NH3(及其新的linq提供程序)将缩小Linq性能方面的差距。 几周前,NH3加入了GA。 我已经使用了一段时间,并且与NH2相比其性能非常满意。

@Brook,您知道nhibernate3在linq中实现了SelectMany吗? 我非常有兴趣找到一个SelectMany,如何将其更改为在nhibernate中工作。

如@MikeAinOz先前所述,实体框架是一个不错的开始,您也可以在其中连接其他数据库。此示例也是程序分层的一个很好的起点:

http://layersample.codeplex.com/releases/view/47627

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39622628/article/details/116511959

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法