linq小记

添加到 Table 的对象不在标识缓存中。标识缓存仅反映从数据库中检索到的内容。调用 InsertOnSubmit 后,直到 SubmitChanges 成功完成,所添加的实体才会出现在对数据库的查询中。

运行库中的对象具有唯一标识。引用同一对象的两个变量实际上是引用此对象的同一实例。因为这一事实,您通过一个变量做出更改后,立即就可以通过另一个变量看到这些更改。

对于对象,您的期望则大不一样。您期望在您反复向 DataContext 索取相同的信息时,它实际上会为您提供同一对象实例

在此示例中,如果您执行同一查询两次,则您每次都会收到对内存中同一对象的引用。
Customer cust1 =
    (from cust in db.Customers
     where cust.CustomerID == "BONAP"
     select cust).First();

Customer cust2 =
    (from cust in db.Customers
     where cust.CustomerID == "BONAP"
     select cust).First();


避免在插入或更新时显式设置数据库生成的值
问:我的一个数据库表具有一个默认为 SQL Getdate() 的 DateCreated 列。在我试图使用 LINQ to SQL 插入新记录时,该值会设置为 NULL。我希望其设置为数据库默认值。

答:LINQ to SQL 会自动为标识(自动增加)和 rowguidcol(数据库生成的 GUID)以及时间戳列处理这种情况。在其他情况下,您应手动设置 IsDbGenerated=true 和 AutoSync=Always/OnInsert/OnUpdate 属性。

 

 


同样,使用经 LINQ to SQL 转换后的 Average 计算整数值时,所得结果的数据类型为 integer,而非 double。

并且使用 Sum 计算空序列或只包含 null 的序列时,所得结果为 null 而非零。

LINQ to SQL 允许在 GroupBy 和 OrderBy 方法中使用实体类型。在这些运算符的转换过程中,使用一种类型的参数被视为等效于指定该类型的所有成员。例如,下面的代码是等效的:db.Customers.GroupBy(c => c);
db.Customers.GroupBy(c => new { c.CustomerID, c.ContactName });


具体而言,您不能对包含映射到 text 或 ntext 列的成员的任何结果使用 Distinct()。


 

转载于:https://www.cnblogs.com/z2002m/archive/2008/08/12/1266221.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值