DateTime, только Date, только Time в Entity Framework

  • Михаил
  • 12 мин. на прочтение
  • 46
  • 05 Dec 2022
  • 05 Dec 2022

DateTime

Чтобы создать в базе колонку с типом DateTime нужно в C# классе написать :

public DateTime StartDate { get; set; }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

// подключаем распознование атрибутов [...]
using System.ComponentModel.DataAnnotations.Schema;

public class Book
{
     public int Id { get; set; }

     public DateTime StartDate { get; set; }

     public string Name { get; set; }
}

В базе данных будет так

То есть в базе данных будет храниться Дата и время

DateTime не имеет значение по умолчанию. Это значение мы должны устанавливать при добавлении каждой записи в Базу данных иначе будет ошибка.
 

Читаем как во View в .NET показывать DateTime в нужном формате...

Только Date

Чтобы в базе данных был тип только date нужно описать C# класс так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

// подключаем распознование атрибутов [...]
using System.ComponentModel.DataAnnotations.Schema;

public class Book
{
     public int Id { get; set; }

     [Column(TypeName="date")]
     public DateTime StartDate { get; set; }

     public string Name { get; set; }
}

В базе данных будет так

То есть в базе данных будет храниться только Дата

Только Time

В базе данных мы не можем создать колонку только с типом Time. Для этого мы можем использовать DateTime в C# классе:

public DateTime StartDate { get; set; }

и в атрибутах выставить что показывать только время в нужном формате

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

// подключаем распознование атрибутов [...]
using System.ComponentModel.DataAnnotations.Schema;

public class Book
{
     public int Id { get; set; }

     [DataType(DataType.Time)]
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
     public DateTime StartTime { get; set; }

     public string Name { get; set; }
}