LINQ查询不到null加上其他值结果是啥回来null吗

在C#声明这个日期字段的时候这样写

然后这个字段就可以设置空值

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

来自知道合伙人认证行家 推荐于

从事多年网络方面工作,有丰富的互联网经验。

这是因为 dr["TeaAge"] 的类型是 object,而 对后台数据库进行操作,因为所有的数据库连接、读取、操作千篇一律,编程成为了体力活。

虽然我们可以设计自己的类作为数据库访问的持久层,但是每一个类都必须有不相同的SQL语句,这样对于设计统一的数据库读写类造成了很大的困难。

开发人员在这种情况下必须包办窗体设计、方法设计、数据库读写设计的过程,这样加大了开发人员的负担也使得项目的维护和后期开发变得难以进行。

如果觉得上面的解释有点抽象,那么可以这样理解,LINQ其实就是提供了一套查询功能,可以实现任何数据源的查询,此处数据源不单指数据库或者XML文件,而是任何集合或者实体,比如我们接触各种编程语言都需要用到的数组,现在不用遍历数组元素来寻找需要的项,LINQ可以实现这方面的查询。

尚不支持匿名方法,Lambda 表达式可能仅包含一个语句。

上例中的的程序等同于下面

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

事实上,虽然在Java数据库映射领域Hibernate是使用最为广泛的方案,但是在.NET中由于LINQ等映射方案(包括微软下一代重量级的Entity Framework)的使用,NHibernate冷了许多。

NHibernate需要配置数据库配置文件和类/表映射配置文件,所以使用NHibernate需要懂得XML文件的基础知识,并且需要掌握比较复杂的XML文件配置节和相应的配置命令。

2.2.1 数据库配置文件

NHibernate官方提供了配置文件的模板和实例可供我们参考。

图2.4 NHibernate官方数据库配置文件模板(对应了不同的数据库)

上图为数据库配置文件。通常以“cfg.xml”作为后缀,一个示例的文件内容如下

图2.5 数据库配置文件示例

下面是一些在运行时可以改变NHibernate行为的其他配置。所有这些都是可选的,也有合理的默认值。

指定一个自定义的CacheProvider缓存提供者的类名

把NHibernate查询中的一些短语替换为SQL短语(比如说短语可能是函数或者字符)。

2.2.2 实体映射配置文件

NHibernate官方开源包中提供了实体映射配置文件的实例可供我们参考。

图2.6 NHibernate开源包中提供的实体映射配置文件

与数据库配置文件一样实体映射配置文件也是XML文件(XML果然是很强大啊,微软下一代应用程序开发技术WPF就是使用XML文件将C/S和B/S长期分居的二人统一到一个屋檐下),所不同的是实体映射配置文件后缀是“hbm.xml”。

图2.7 实体映射配置文件

实体映射配置文件所要配置的信息一般为

auto-import (可选 - 默认为 true): 指定是否我们可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。

assembly (可选): 指定一个程序集,如果在映射文档中没有指定程序集,就使用这个程序集。

namespace (可选): 指定一个命名空间前缀,如果在映射文档中没有指定全限定名,就使用这个命名空间名。

name: 持久化类(或者接口)的全限定名。

table: 对应的数据库表名。

discriminator-value (可选 - 默认和类名一样): 一个用于区分不同的子类的值,在多态行为时使用。

mutable (可选, 默认为 true): 表明该类的实例可变(不可变)。

proxy (可选): 指定一个接口,在延迟装载时作为代理使用。你可以在这里使用该类自己的名字。

where (可选) 指定一个附加的SQL WHERE 条件,在抓取这个类的对象时会一直增加这个条件。

lazy(可选):假若设置 lazy="true",就是设置这个类自己的名字作为proxy接口的一种等价快捷形式。

name (可选): 标识属性的名字。

column (可选 - 默认为属性名): 主键字段的名字。

unsaved-value (可选 - 默认为 null): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注)但未再次持久化的实例区分开来。

除此之外我们可以通过其他途径深入了解配置方面的知识,一个NHibernate项目,配置文件的错误往往导致错误的结果甚至使得程序无法运行。

SQL比NHibernate更加容易上手,节省了人员培训的开销。

另外,虚机团上产品团购,超级便宜

适用场景:实现过滤,查询等功能。

说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。

Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:

例如:使用where筛选在伦敦的客户

它基于由 应用程序混合在一起,将当前 连接。对DataContext 的所有操作(包括查询)都使用所提供的这个连接。如果此连接已经打开,则在您使用完此连接时,LINQ to SQL 会保持它的打开状态不变。我们始终可以访问此连接,另外还可以使用 Connection 属性自行关闭它。

//新建一个 标准的数据操作 代码... //

//利用现有的 连接创建Northwind对象,本例中的查询返回运费至少为 Framework 创建事务的首选方法是使用 TransactionScope 对象。通过使用此方法,我们可以创建跨数据库及其他驻留在内存中的资源管理器执行的分布式事务。事务范围几乎不需要资源就可以启动。它们仅在事务范围内存在多个连接时才将自身提升为分布式事务。

注意:不能将此方法用于所有数据库。例如,SqlClient 连接在针对 SQL Server 2000 服务器使用时无法提升系统事务。它采取的方法是,只要它发现有使用事务范围的情况,它就会自动向完整的分布式事务登记。

下面用一个例子说明一下事务的使用方法。在这里,也说明了重用 连接:

  // 如果有一个错误,所有的操作回滚

   连接创建 Northwind 对象,然后与此对象共享一个 连接执行 SQL 命令,又用于通过 Northwind 对象提交更改。当事务因违反 CHECK 约束而中止时,将回滚所有更改,包括通过 SqlCommand 做出的更改,以及通过Northwind 对象做出的更改。

在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些。下面我们以panyName);

在Select中使用用户定义的标量函数

使用动态查询,这个例子用CreateQuery()方法创建一个 IQueryable<T>类型表达式输出查询的语句。这里给个例子说明一下。有关动态查询具体内容,下一篇介绍。

生成的 SQL语句为:

下面一个例子是“搭建”Where用法来动态查询城市在伦敦的顾客。




我要回帖

更多关于 null加上其他值结果是啥 的文章

 

随机推荐