0

我有一个用于选择行的 LS 应用程序的域服务,并且该行中的许多字段都是日期时间字段。当我尝试执行以下代码时,我不断收到关于日期时间转换的 Linq to Entity 错误:

public IQueryable<riaProjectItem> FilterProjectItems(int? projID)
{

    var FilteredProjectItems = _
        from pi in this.Context.ProjectItems
          where (pi.Project.Id == projID)
          orderby pi.ItemCode ascending
           select new riaProjectItem
          {
              // Note we turn the ID of the Internal Products to 
              // A negative number so we don't have duplicates
              // with the External products
              Id = pi.Id,
              ItemCode = pi.ItemCode,
              ItemName = pi.ItemName,
              TechnicalStartDate = pi.TechnicalStartDate.GetValueOrDefault().Date,
              TechnicalWeeks = Convert.ToDecimal(pi.TechnicalWeeks.ToString()),
              TechnicalPercentComplete = Convert.ToDecimal(pi.TechnicalPercentComplete.ToString()),
              EditingStartProjected = pi.EditingStartProjected.GetValueOrDefault().Date,
              EditingStartActual = pi.EditingStartActual.GetValueOrDefault().Date,
              EditingWordWeeks = Convert.ToDecimal(pi.EditingWordWeeks.ToString()),
              EditingEditPercent = Convert.ToDecimal(pi.EditingEditPercent.ToString()),
              EditingReview = Convert.ToDecimal(pi.EditingReview.ToString()),
              ClientReviewStartProjected = pi.ClientReviewStartProjected.GetValueOrDefault().Date,
              ClientReviewStartActual = pi.ClientReviewStartActual.GetValueOrDefault().Date,
              TranslationPercent = Convert.ToDecimal(pi.TranslationPercent.ToString()),
              ClientReview = Convert.ToDecimal(pi.ClientReview.ToString()),
              FinalStartProjected = pi.FinalStartProjected.GetValueOrDefault().Date,
              FinalStartActual = pi.FinalStartActual.GetValueOrDefault().Date,
              FinalForm = Convert.ToDecimal(pi.FinalForm.ToString()),
              FinalReview = Convert.ToDecimal(pi.FinalReview.ToString()),
              CBTStartDateProjected = pi.CBTStartDateProjected.GetValueOrDefault().Date,
              CBTStartDateActual = pi.CBTStartDateActual.GetValueOrDefault().Date,
              CBTWeeks = Convert.ToDecimal(pi.CBTWeeks.ToString()),
              CBTPercent = Convert.ToDecimal(pi.CBTPercent.ToString()),
              DeliveryDate = pi.DeliveryDate.GetValueOrDefault().Date,
              ActualDeliveryDate = pi.ActualDeliveryDate.GetValueOrDefault().Date,
              Comments = pi.Comments


         } ;

    return FilteredProjectItems;
}


// Override the Count method in order for paging to work correctly
protected override int Count<T>(IQueryable<T> query)
{
    return query.Count();
}

}

类 riaProjectItem

public class riaProjectItem
{

    [Key]
    public int Id { get; set; }
    public int ItemCode { get; set; }
    public string ItemName { get; set; }
    public DateTime TechnicalStartDate { get; set; }
    public Decimal TechnicalWeeks { get; set; }
    public decimal TechnicalPercentComplete { get; set; }
    public DateTime EditingStartProjected { get; set; }
    public DateTime EditingStartActual { get; set; }
    public decimal EditingWordWeeks { get; set; }
    public decimal EditingEditPercent { get; set; }
    public decimal EditingReview { get; set; }
    public DateTime ClientReviewStartProjected { get; set; }
    public DateTime ClientReviewStartActual { get; set; }
    public decimal TranslationPercent { get; set; }
    public decimal ClientReview { get; set; }
    public DateTime FinalStartProjected { get; set; }
    public DateTime FinalStartActual { get; set; }
    public decimal FinalForm { get; set; }
    public decimal FinalReview { get; set; }
    public DateTime CBTStartDateProjected { get; set; }
    public DateTime CBTStartDateActual { get; set; }
    public decimal CBTWeeks { get; set; }
    public decimal CBTPercent { get; set; }
    public DateTime DeliveryDate { get; set; }
    public DateTime ActualDeliveryDate { get; set; }
    public string Comments { get; set; }

}

如何将日期分配给实体字段?

4

1 回答 1

0

当我分配字段时,我这样做:

TechnicalStartDate = (pi.TechnicalStartDate.HasValue) ? pi.TechnicalStartDate.Value : (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue

您需要清楚您使用的是 SQL 版本的 Min 值,而不是不同的 .NET 值。

于 2013-08-07T21:02:30.557 回答