• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

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()。


 

posted @ 2008-08-12 18:02  不若相忘于江湖  阅读(202)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3