ExecuteStoreQuery не работает с установщиком DateTime

У меня проблемы с получением 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 ответ

Хотя я запутался в вашем вопросе, но вместо того, чтобы запутаться, я стараюсь помочь, исходя из того, что понимаю.;-)

Быстрый и простой способ:

  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();
    
Другие вопросы по тегам