我的sql Server 2000 DB包含返回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]'必须声明一个默认(无参数)构造函数才能在映射过程中构造。
请问你能帮帮我吗?
答案 0 :(得分:1)
由于服务器已经提供了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/
答案 1 :(得分:0)
抱歉我的英文))) 嗨,大家好! 感谢您的帮助,但我刚刚解决了这个问题。
在MS Visual Studio 2008或更高版本中使用Server Explorer =&gt;数据连接=&gt;添加新连接并连接到我的数据库。然后在服务器资源管理器中显示,以及其他项目的DB,存储过程和我刚刚在代码中绘制了dbo.spGetDBDateTime过程,VS为此过程生成了包装,所以我可以调用它。