简体   繁体   中英

ExecuteMethodCall: The type 'System.Nullable`1[System.DateTime]' must declare a default (parameterless) constructor

I've sql Server 2000 DB which includes Stored Procedure that return Current DateTime. And I've the procedure that call this procedure:

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

I've got such error: The type 'System.Nullable`1[System.DateTime]' must declare a default (parameterless) constructor in order to be constructed during mapping.

Could you help me, please?

You don't really need a custom stored procedure to get the current server datetime since the server already offers the T-SQL function GETDATE(). All you need to do is create a LINQ to SQL method pointing to that function. Add the new method to your DataContext partial class (right-click on the designer surface and go View Code) like this:

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;
        }
    }
}

And call it like this:

DateTime serverDate = context.GetSystemDate();

Partial credit for this answer goes here :-)

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

Sorry about my English ))) Hi, everyone! Thank's for your helps, but I have just solved this problem self.

In MS Visual Studio 2008 or later versions used Server Explorer => Data Connections =>Add new Connection and connected to my DB. Then in server Explorer was showed, as well as other items of DB, Stored Procedures and I just drew dbo.spGetDBDateTime procedure in code and VS generated wrap for this procedure, so I could called it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM