In my model namespace, I have different model classes. I have DateTime
fields in my different classes. When I run
dotnet ef migrations add InitialCreate
without problem, it adds a migration and I am able to update the database too.
When I looked up my initialCommit.Designer.cs
, I saw that all of my DateTime
properties have column type text.
Like this:
namespace myapp.API.Models
{
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Gender { get; set; }
public DateTime BirthDate { get; set; }
public string KnownAs { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime LastActive { get; set; }
..
}
}
namespace myapp.API.Models
{
public class Photo
{
public int Id { get; set; }
public string Url { get; set; }
public string Description { get; set; }
public DateTime DateAdded { get; set; }
public bool IsMain { get; set; }
public string PublicId { get; set; }
public User User { get; set; }
public int UserId { get; set; }
}
}
namespace myapp.API.Migrations
{
[DbContext(typeof(DataContext))]
[Migration("20200206201625_initialCommit")]
partial class initialCommit
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.1");
modelBuilder.Entity("myapp.API.Models.Photo", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTime>("DateAdded")
.HasColumnType("TEXT");
b.Property<string>("Description")
.HasColumnType("TEXT");
b.Property<bool>("IsMain")
.HasColumnType("INTEGER");
b.Property<string>("PublicId")
.HasColumnType("TEXT");
b.Property<string>("Url")
.HasColumnType("TEXT");
b.Property<int>("UserId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Photos");
});
modelBuilder.Entity("myapp.API.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTime>("BirthDate")
.HasColumnType("TEXT");
b.Property<string>("City")
.HasColumnType("TEXT");
b.Property<string>("Country")
.HasColumnType("TEXT");
b.Property<DateTime>("CreatedOn")
.HasColumnType("TEXT");
b.Property<string>("Gender")
.HasColumnType("TEXT");
b.Property<string>("Interests")
.HasColumnType("TEXT");
b.Property<string>("Introduction")
.HasColumnType("TEXT");
b.Property<string>("KnownAs")
.HasColumnType("TEXT");
b.Property<DateTime>("LastActive")
.HasColumnType("TEXT");
b.Property<string>("LookingFor")
.HasColumnType("TEXT");
b.Property<byte[]>("PasswordHash")
.HasColumnType("BLOB");
b.Property<byte[]>("PasswordSalt")
.HasColumnType("BLOB");
b.Property<string>("UserName")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Users");
});
modelBuilder.Entity("myapp.API.Models.Value", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Name")
.HasColumnType("TEXT");
b.Property<string>("Type")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Values");
});
modelBuilder.Entity("myapp.API.Models.Photo", b =>
{
b.HasOne("myapp.API.Models.User", "User")
.WithMany("Photos")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
#pragma warning restore 612, 618
}
}
}
As you can see, all of my DateTime
fields are defined like this :
b.Property<DateTime>("DateAdded").HasColumnType("TEXT");
you can set the columtype yourself;
modelBuilder.Entity<User>.Property<b=>BirthDate>().HasColumnType("date");