Как я использую GETDATE SQL () и DATEADD () в Linq к SQL-выражению?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
27
задан massko 22 November 2016 в 10:44
поделиться

3 ответа

Попробуйте это :

[Function(Name="GetDate", IsComposable=true)] 
 public DateTime GetSystemDate() 
 {   
    MethodInfo mi = MethodBase.GetCurrentMethod() as MethodInfo;   
    return (DateTime)this.ExecuteMethodCall(this, mi, new object[]{}).ReturnValue; 
 }

РЕДАКТИРОВАНИЕ : это должно быть частью Вашего класса DataContext.

Теперь можно использовать GetSystemDate () вместо DateTime. Теперь в Ваших запросах. Что касается даты различия смотрят на Систему. Данные. Linq. Пространство имен SqlClient, особенно функции DayDiffXXX класса SqlMethods.

43
ответ дан liggett78 28 November 2019 в 05:10
поделиться

Если бы Вы не возражаете запрашивать базу данных перед каждым использованием, я предложил бы следующее обходное решение: Используйте ExecuteQuery в одном месте для получения даты в контексте данных как это:

public partial class YourDataContext
{
  public DateTime GetDate()
  {
    return ExecuteQuery<DateTime>("SELECT GETDATE()").First();
  }
}

и затем можно записать

from subscription in dbContext.Subscriptions
where subscription > dbContext.GetDate().AddDays(2)
select subscription
6
ответ дан Panos 28 November 2019 в 05:10
поделиться

Вы могли использовать ExecuteQuery для получения полного контроля над sql http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx

, я знаю, что это походит на очень небольшое количество усиления (или возможно на обратном) по ADO.NET все же.

0
ответ дан Per Hornshøj-Schierbeck 28 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: