使用英国数据库登录名的日期时间属性上的 Linq To SQL 表关联

本文关键字:Linq To SQL 关联 属性 日期 英国 数据库 登录 时间 | 更新日期: 2023-09-27 18:35:08

>我有两个表父表和子表。这两个表都有一个主键"MyDate",在 Sql Server 中声明为 DateTime。两个表都有一个记录,其中 MyDate 设置为"2011-12-01 00:00:00.000",即 2011 年 12 月 1 日。

在我的Linq to SQL dbml(.Net 3.5)中,我在MyDate属性上自动创建了两个表之间的关联。DataContext 使用登录到在 SQL Server (2008) 中将其默认语言设置为"英国英语"的数据库。当我运行 Linq 查询时:

var query
  from parent in myDataContext.PARENTs
  select parent

我取回父记录,但没有取回链接的子记录。

在 SQL 事件探查器中,我有以下跟踪:

-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language British
set dateformat dmy
set datefirst 1
set transaction isolation level read committed
exec sp_executesql N'SELECT [t0].[MyDate] FROM [dbo].[CHILD] AS [t0]
WHERE ([t0].[MYDATE] = @p0)','@p0 datetime',@p0='2011-12-01 00:00:00'

这将返回 0 条记录;我已经通过使用相同的(英国)登录直接在查询窗口中运行它来检查它。如果我注释掉"设置日期格式 dmy",我仍然得到 0 条记录。如果我使用非英国登录名运行它,我会得到一条记录。如果我使用'01-12-2011 00:00:00'作为日期(例如,英国日期格式)和英国登录,我会得到一个记录。

在我看来,Linq 在创建要在查询中使用的日期字符串时没有使用正确的日期格式。既然它使用"设置日期格式 dmy",为什么它没有在生成的日期字符串中使用该格式?

有没有相对简单的方法来解决这个问题?谢谢。

编辑:在我的模型中,父级和子级上的 MyDate 属性的服务器数据类型为"日期时间不为空",类型为"日期时间(System.DateTime)"。

使用英国数据库登录名的日期时间属性上的 Linq To SQL 表关联

尝试预先加载

LINQ to SQL:延迟和急切加载打嗝

var query = (from parent in MyDataContext.Parents select parent)
                .Including(childs => parent.Childs);

试用

from parent in Parents select new
     {parent.Name, parent.Whatever,
     Childs =
         parent.Childs.where(c=>c.Date== parent.Date) };