是我自己在注册表中给vs增加了自动以管理员身份运行,把值给错了,弄成了 ~ RUNASADMIN WIN7RTM, 改成 ~ RUNASADMIN 后OK。还好...
create or replace function test_f(id varchar2) return varchar2 is Result ...
NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate..."); cfg.SetProperty(Environment.ConnectionDriver, "NHibernate.Driver.SqlClientDriver"); cfg.SetProperty..."); cfg.SetProperty(Environment.ConnectionDriver, "NHibernate.Driver.MySqlDataDriver"); cfg.SetProperty...)) { for (int i = 0; i < InsertCount; i++) { var data = new TestData { Id = Guid.NewGuid...由于 SqlClientBatchingBatcherFactory 在 mono 环境下无法运行, 所以以下两个测试都不使用 batch 。 在 OS X 开发环境下测试结果如下: ?
越短越好是为了查询的速度快,顺序增长是为了插入速度快。...还有一个原因是业务主键在数据录入的时候不一定是明确知道的,有时我们会在不知道业务主键的情况下,就录入其他相关信息,这个时候,如果使用业务主键做数据库的主键,那么数据将无法录入。...主键值的生成 主键值的生成可以参考NHibernate的配置,概况下来主要有这么几种生成方式: 自增,这是SQL Server常用的主键生成方式,完全由数据库管理主键的值。...GUID,这是用于GUID类型的主键,可以使用newid()这种数据库提供的函数,或者使用程序生成Guid并赋值。 Hilo值,这是一种使用高低位算法生成的数字值的主键。...该值由NHibernate程序内部生成。 其他程序赋值,完全由程序根据自己的算法生成并赋值。
缺点: 1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。 3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。 4)传输数据量大 5)不可读。 3....= Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); } 2)为了解决UUID无序的问题,NHibernate...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。...其格式如下: ? 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。...stub char(1) NOT NULL default '', PRIMARY KEY (id), UNIQUE KEY stub (stub) ) ENGINE=MyISAM 当我们插入记录后,执行
缺点: 1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。 3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。 4)传输数据量大 5)不可读。 3....= Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); } 2)为了解决UUID无序的问题,NHibernate...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。...Guid GenerateComb() { byte[] guidArray = Guid.NewGuid().ToByteArray(); DateTime baseDate =...其格式如下: ? 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。
缺点 没有排序,无法保证趋势递增 UUID往往使用的是字符串存储,查询效率比较低 存储空间比较大,一般是16位或者32位 传输数据量大 不可读 三、UUID 变种 为了解决UUID不可读,可以使用UUID...= Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); } 为了解决UUID无序的问题,NHibernate...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。...Guid GenerateComb() { byte[] guidArray = Guid.NewGuid().ToByteArray(); DateTime baseDate = new...后面3个是直接生成的GUID。
缺点: 1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。 3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。 4)传输数据量大 5)不可读。 3.... = Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, ); } 2)为了解决UUID无序的问题,NHibernate...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。... Guid GenerateComb() { byte[] guidArray = Guid.NewGuid().ToByteArray(); DateTime baseDate =...其格式如下: 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。
在Linq之前在.net领域最流行的框架就是Nhibernate。是不是在LINQ之后Nhibernate就要消失呢?答案自然是否定的。...这里有个帖子Microsoft LINQ + NHibernate: 在那篇帖子中,作者列举了三大原因: 在DLINQ中,虽然可以在语言层级定义查询逻辑。...而DLINQ目前还无法拥有。 而LINQ + NHibernate的好处则是: 类型安全的查询,并且能使用智能提示功能!这样可以不用学习HQL了。 能获得所有NHibernate所拥有的能力。...假如你已经从数据库中查询出了一个数据集,那么可以使用LINQ来进行过滤,排序和分页操作。...从原理上来说,DLINQ是将Lambda查询表达式解析为SQL语句:DLINQ => SQL,而NHLINQ则是将Lambda查询表达式解析为HQL语句:NHLINQ => HQL。
前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1....提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core中的导航属性。...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...max_fetch_depth 最大递归深度,表示一次查询中直接加载的导航属性深度。默认是不直接加载导航属性,基于延迟加载的逻辑,由实际使用时才从数据库中加载数据。...hbm2ddl.auto 该值表示每次ISessionFactory创建的时候,是否自动生成DDL语句并提交数据库执行。默认是空,表示不会强制更新数据库。
NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。...程序员甚至不需要对SQL 的熟练掌握,NHibernate 会根据制定的存储逻辑,自动生成对应的SQL 并调用ADO.NET接口加以执行。 ...也就是说,IbatisNet并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定PO。...使用IbatisNet提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的DotNet对象,这一层与通过NHibernate实现ORM 而言基本一致,而对于具体的数据操作,NHibernate会自动生成...当系统属于二次开发 , 无法对数据库结构做到控制和修改 , 那 IbatisNet 的灵活性将比 NHibernate 更适合 4 .
缺点: 1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。 3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。 4)传输数据量大 5)不可读。 3....Guid.NewGuid().ToByteArray(); return BitConverter.ToInt64(bytes, 0); } 2)为了解决UUID无序的问题,NHibernate...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。...Guid GenerateComb() { byte[] guidArray = Guid.NewGuid().ToByteArray(); DateTime baseDate = new...其格式如下: ? 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。
更严重的问题是,这个实例的析构操作什么时候执行? 如果在类的析构行为中有必须的操作,比如关闭文件,释放外部资源,那么上面所示的代码无法实现这个要求。我们需要一种方法,正常地删除该实例。...或者说把删除自己的操作挂在系统中的某个合适的点上,使其在恰当的时候自动被执行。 我们知道,程序在结束的时候,系统会自动析构所有的全局变量。...缺点: 1)没有排序,无法保证趋势递增。 2)UUID往往是使用字符串存储,查询的效率比较低。 3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。...保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。...其格式如下: 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着ObjectId 大致会按照插入的顺序排列。
使用左匹配的好处是可以使用到SQL Server中对该字段建立的索引,使得查询效率很高,但是不好的SQL语句仍然会导致索引无法使用。...假设我们现在有个表YCMRSALE,其中有个字段MATNR存储了料号信息,如果我们要从这个表中查询出以AB开头的料号,如果使用NHibernate,那么我们常用的写法有: //QueryOver的写法...但是如果用NHibernate就要麻烦点了,我们必须要判断用户输入的字符串里面是否有特殊转移符,如果有,那么就需要进行替换,而且C#查询语句也有所不同。...YCMRSALE s inner join matnr m on left(s.MATNR,len(m.matnr))=m.matnr 这个写法能够得到我们想要的结果,但是由于对MATNR列使用了函数,所以无法使用索引...,所以查询速度很慢。
你能够用它来为执行一个作业而 创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。...主要用于领域对象与DTO之间的转换、数据库查询结果映射至实体对象。...业务开发人员可以使用模型驱动的方法设计,实现,执行和跟踪业务流程。因此开发人员能够更容易的关注业务逻辑的变化。...NHibernate可以帮助你消除或者包装那些针对特定数据库的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。...它拥有一个SQL工厂用来创建自定义查询、DataView构建助手和卓越的性能和完善的文档。
Guid并不是C#独有的,所以可以放心使用,不用担心跟其他系统交互时遇到对方无法识别的尴尬局面。...继续介绍第二个构造方法,通过格式化的字符串创建: public Guid (string g); g表示Guid数据,有以下几种格式: dddddddddddddddddddddddddddddddd...1.3 Guid与字符串之间一个转身 根据Guid构造函数可以看到Guid的打印格式应该有三种,那么如何生成这三种呢?C#还有没有更多的格式支持呢?...static Guid ParseExact (string input, string format); 第一个方法由C#自动解析字符串格式,第二种由调用方明确指出字符串的格式。...在C#中struct无法置为NULL,一般情况下并不影响程序的运行。但是,如果涉及到交互,无论是与人还是与其他的系统交互,都会出现数据不可用的情况。
我的答案是肯定的,这个和我们为Repository建立接口是一样的,EF中的IDbSet就是一个Repository模式,但是他们都是EF里面的东西,如果哪天我们换成NHibernate了,我们不可能为了这一个接口和基类把...Jeffery说在传统的多层架构中,上层对下层有着较强的依懒关系,UI没了BLL就没法工作,BLL少了DAL也无法正常运行。当然他说这句话的时候是08年,并且他的确是在前面加了“传统” 两个字。 ...毕竟我们现在只需要用到查询的功能。我们可以单独建一个IQuery的接口给领域层使用。...因为是IQueryable,所以也是只会返回我们所查询的内容,和直接用EF查询是一个道理。下面是我们_userQuery.Table.Any()所生成的SQL语句。...我们就可以知道Repository在应用层已经可以被替换成别的东西,IDAL也可以啊:)。当然有人也许会建议直接拿EF来用多好,其实我不建议这样去做,考虑到以后把EF换掉的可能性。
那么是不是还存在别的COM模型给我们去利用?我们还可以思考一个问题: 我们只能利用来进行横向移动吗? 显然答案是否定的。...每当应用程序创建COM组件的实例时,都会查询注册表以将组件的CLSID或ProgID解析为包含它的服务器DLL或EXE的路径名。...设置了“启动许可”的对象将如下所示,其中的数据代表二进制格式的对象的ACL: ? 没有明确设置LaunchPermission的用户将没有该特定注册表项。...IID是全局唯一标识符(GUID) GUID具有唯一性,我们可以使用Guid了定位。...返回给该对象的句柄揭示了几种方法和属性,我们无法与它们进行交互。
GRUB 配置,未果 终于,皇天不负有心人,在我不停迭代搜索词后,还是让我找到了一篇看得懂行得通的博客 PowerShell修改Hyper-V虚拟机的UUID 尝试了文章引用的国外大佬的工具,发现已经无法运行...通过查询验证可行性,修改名称为自己的虚拟机名,使用 PowerSheel(管理员) 执行命令即可查询到 Get-VM "devops04" | % { (gwmi -Namespace root\virtualization...重要,尝试了两次,确认需要在虚拟机关闭的时候执行才有用 执行命令 修改虚拟机名称变量:devops04 为你的虚拟机名称 然后直接粘贴下面命令到 PowerShell 终端执行即可 也可以存为.ps1...$CurrentSettingsData.BIOSGUID #生成新GUID $GUID = [System.Guid]::NewGuid() #重新写入GUID,注意要带{},这是非常重要的细节 $...,再次查询uuid也已经更新 开机启动使用命令查询Linux发现已经变更,因为UUID的表示形式是不区分大小写的,因此大小写字母的顺序不会影响其唯一性。
使用Select Max(Id) + 1 这种查询语句,会出现并发访问的问题。 2、为现有数据行重新编号:通常做法是找到主键最大的行,然后用最小的未被使用的值来更新它。 ...缺点:(1)SQL语句比较麻烦; (2)必须同时更新所有引用了你重新分配了主键的行的子记录; (3)无法避免产生新的断档。 ...3、制造数据差异 如果别的外部系统依赖于数据库中的主键来定义数据,那么你的更新操作就会导致那个系统中的引用失效。 ...缺点:(1)Guid的值太长,不方便输入; (2)Guid的值是随机的,因此找不到任何规则或者依靠最大值来判断哪一行的最新插入的; (3)Guid的存储需要16字节,这比传统的...4自检整形伪键占用更多的控件,并且查询的速度更慢 结论:将伪键当做行的唯一性标识,但它们不是行号。
领取专属 10元无门槛券
手把手带您无忧上云