【发布时间】:2013-03-15 07:03:55
【问题描述】:
所以我试图从脚本任务内的表中获取最新记录。错误出现在 Linq 查询中,如下所示:
"Could not Translate expression 'Table(SSASLogging).Select(r=>r.TimeStamp).Max()' into SQL and could not treat it as a local expression."
问题在于 DateTime 数据类型,但我需要 DateTime 将其提供给我的 SSIS 变量。我知道这可以在执行 SQL 任务中轻松完成,但我现在放弃太远了!我知道 DateTime 有一些 LinqToSQL 方法,但它们看起来是为了比较,我不知道如何在这里应用它们。
public DateTime getLatest()
{
DateTime result = new DateTime();
//temp dummy/defaul date is two days ago
result = DateTime.Now.AddDays(-2);
try
{
//get the data connection string from the connection manager
RW = (string)Dts.Connections["ReportingWarehouse"].ConnectionString;
//Remove the Provider, Auto Translate, and Application
//as it is not a parameter for the DataContext constructor
RW = RW.Remove(RW.IndexOf("Provider=SQLNCLI10.1;"), "Provider=SQLNCLI10.1;".Length);
RW = RW.Remove(RW.IndexOf("Auto Translate=False;"), "Provider=SQLNCLI10.1;".Length);
RW = RW.Remove(RW.IndexOf("Application"),RW.Length - RW.IndexOf("Application"));
MessageBox.Show(RW);
//get the last insertion date from the SSASLoging table
using (DataContext RWData = new DataContext(RW))
{
Table<SSASLogging> records = RWData.GetTable<SSASLogging>();
var rs = (from r in records
select r.TimeStamp).Max();
//result = rs.FirstOrDefault();
}
}
catch (Exception e)
{
MessageBox.Show("Exception in Retrieving latesttime" + e.Message + "/n"
+ e.StackTrace);
}
return result;
}
}//end partial class
[Table]
public class SSASLogging
{
[Column(Name = "CREATED_TIMESTAMP")]
private DateTime timeStamp;
public DateTime TimeStamp
{
get { return this.TimeStamp; }
}
}//End SSASLogging
【问题讨论】:
-
r.TimeStamp在数据库和模型中的类型是什么? -
数据库中的类型为DateTime,包中的类型为DateTime。我不确定你所说的模型是什么意思?
-
您是否可以在不指定
Max()的情况下从r.TimeStamp中选择所有日期的列表? -
是的,如果我不让 Max 它运行,我可以做到这一点
标签: c# sql-server-2008 datetime linq-to-sql ssis