ExecuteStoreQuery无法使用DateTime setter

时间:2013-09-09 16:02:03

标签: c# datetime .net-4.0 objectcontext executestorequery

我无法让ExecuteStoreQuery与我的自定义类正常工作,该自定义类具有DateTime成员。它获取默认的DateTime值(1/1/0001 12:00:00 AM),而不是数据库中的值。

List<MyInfo> results = context.ExecuteStoreQuery<MyInfo>(SELECT [StartTime] FROM [dbo].[Records] WHERE [Type] = 1).ToList();

MyInfo类定义:

public class MyInfo
{
    private DateTime startTime;
    public DateTime StartTime
    {
        get { return startTime; }
        set { startTime = value; }
    }
}

但是,如果我使用DateTime而不是MyInfo进行查询,则会返回正确的日期。

List<DateTime> results = context.ExecuteStoreQuery<DateTime>(SELECT [StartTime] FROM [dbo].[Records] WHERE [Type] = 1).ToList();

1 个答案:

答案 0 :(得分:0)

虽然我对你的问题感到困惑,但我并没有混淆,而是基于我的理解而努力帮助。 ; - )

快捷方便:

  1. 如果您只在返回日期时间方面遇到问题,则可以使用

    var ls = context.ExecuteStoreQuery<MyInfo>("Select StartTime from YourTable");
    
    List<DateTime> dt= new List<DateTime>();
    foreach(MyInfo i in ls)
    {
      dt.Add(ls.StartTime);
    }
    
  2. 如果您想返回自定义类的列表,那么它将只是

    var list = Context.ExecuteStoreQuery<MyInfo>(Your_Sql_Query_Here).ToList();
    
  3. 如果只需要一个课程,我希望SIngleOrDefault()能够正常工作。

    var cls = Context.ExecuteStoreQuery<MyInfo>Your_Sql_Query_Here).SingleOrDefault();
    
  4. 如果您只需要单个值,那么

    var scalar = Context.ExecuteStoreQuery<Object>(Your_Sql_Query_Here).FirstOrDefault();