ExecuteMethodCall: тип 'System.Nullable`1 [System.DateTime]' должен объявить конструктор по умолчанию (без параметров) - PullRequest
1 голос
/ 06 октября 2010

У меня есть база данных sql Server 2000, которая содержит хранимую процедуру, возвращающую Current DateTime.И у меня есть процедура, которая вызывает эту процедуру:

 [Function(Name = "dbo.spGetDBDateTime")]
public ISingleResult<DateTime?> GetDBDateTime()
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),new object[]{} );
    return ((ISingleResult<DateTime?>)(result.ReturnValue));
}

У меня такая ошибка: Тип 'System.Nullable`1 [System.DateTime]' должен объявить конструктор по умолчанию (без параметров) вЧтобы быть построенным во время картирования.

Не могли бы вы помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Вам не нужна специальная хранимая процедура для получения текущего времени сервера, поскольку сервер уже предлагает функцию T-SQL GETDATE ().Все, что вам нужно сделать, это создать метод LINQ to SQL, указывающий на эту функцию.Добавьте новый метод в ваш частичный класс DataContext (щелкните правой кнопкой мыши на поверхности конструктора и перейдите в View Code) следующим образом:

using System.Data.Linq.Mapping;
using System.Reflection;
using System;

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

И назовите его так:

DateTime serverDate = context.GetSystemDate();

Частичный кредит для этого ответа идет здесь: -)

http://peteohanlon.wordpress.com/2008/01/11/sql-server-getdate-and-linq-to-sql/

0 голосов
/ 08 октября 2010

Извините за мой английский))) Всем привет! Спасибо за вашу помощь, но я только что решил эту проблему самостоятельно.

В MS Visual Studio 2008 или более поздних версиях используется Server Explorer => Соединения данных => Добавить новое соединение и подключен к моей БД. Затем на сервере был показан Explorer, а также другие элементы БД, хранимые процедуры, и я просто нарисовал в коде процедуру dbo.spGetDBDateTime, и VS сгенерировал перенос для этой процедуры, чтобы я мог ее вызвать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...