powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL - тип time в SQL
7 сообщений из 7, страница 1 из 1
LINQ to SQL - тип time в SQL
    #36850566
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть БД с таблицей, у которой есть поля с типом date и типом time. При составлении LINQ запроса к этой таблице по полю с типом data, в LINQ появляются методы и свойства этого поля, которые я и использую, к примеру:


DateTime homeData = Convert.ToDateTime("2010/09/15");
where p.Дата.Date > homeData

То есть LINQ понимает что там тип data и показывает мне соответствующие методы и свойства, и я могу составлять выражения.

При составлении LINQ запроса по полю с типом time, LINQ не показывает никаких методов, кроме Equals, GetHashCode, GetType, GetValueOrDefault, ToString и двух свойств HasValue и Value. Должно ли так быть, и если да, то как тогда составлять запросы типа "получить все строки где время больше стольки-то"?

DateTime homeTime = Convert.ToDateTime("10:29:00");
where p.Время.??? > homeTime
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850693
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы используете SQL тип time(7) , то Linq to SQL интерпритирует его в TimeSpan
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850763
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ, да, если сделать у homeTime тип TimeSpan, то ошибка исчезает.

Но как мне делать запросы типа "получить все строки где время больше стольки-то"?

Что делать в таких случаях, помимо изменения типа поля таблицы БД? Можно изменить интерпретацию LINQ?
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850773
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
testing22МСУ, да, если сделать у homeTime тип TimeSpan, то ошибка исчезает.
Так оно должно быть с самого начала TimeSpan.
P.S. MS VS 2010

testing22Но как мне делать запросы типа "получить все строки где время больше стольки-то"?

Код: plaintext
var items = ctx.Tests.Where(d => d.HomeTime > new TimeSpan(16, 35, 8)); // > 16:35:08

testing22Что делать в таких случаях, помимо изменения типа поля таблицы БД? Можно изменить интерпретацию LINQ?
Версия VS?
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850774
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ, VS2010
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850782
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
testing22МСУ, VS2010
Ну, попробуйте создать такую табличку:

Таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE [dbo].[Test](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[HomeData] [datetime2](7) NULL,
	[HomeTime] [time](7) NULL,
 CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


и подтянуть её к схеме DBML. У Вас сгенерится такая проперть класса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HomeTime", DbType="Time")]
public System.Nullable<System.TimeSpan> HomeTime
{
    get
    {
        return this._HomeTime;
    }
    set
    {
        if ((this._HomeTime != value))
        {
	this.OnHomeTimeChanging(value);
	this.SendPropertyChanging();
	this._HomeTime = value;
	this.SendPropertyChanged("HomeTime");
	this.OnHomeTimeChanged();
        }
    }
}
...
Рейтинг: 0 / 0
LINQ to SQL - тип time в SQL
    #36850838
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ, да, есть такое свойство у MyDataBaseDataContext. Я понял, что у него тип timespan. Изменить тип данных в коде не дает.

Я понял пример, спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL - тип time в SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]