0

行を選択する LS アプリケーション用のドメイン サービスがあり、行のフィールドの多くは日時フィールドです。次のコードを実行しようとすると、日時の変換に関する Linq からエンティティへのエラーが発生し続けます。

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

異なる .NET 値ではなく、SQL バージョンの Min 値を使用していることを明確にする必要があります。

于 2013-08-07T21:02:30.557 に答える