Thỉnh thoảng khi sử dụng Mã khung thực thể Trước tiên, các quy ước mặc định không tạo loại cơ sở dữ liệu bạn muốn. Ví dụ: theo mặc định, thuộc tính loại System.DateTime
tạo cột cơ sở dữ liệu thuộc loại DateTime
. Phải làm gì nếu bạn muốn có loại datetime2
(loại DateTime
không có vấn đề với múi giờ và giờ tiết kiệm ánh sáng ban ngày)?Mã khung thực thể đầu tiên: thuộc tính DataType nào cho DateTime2?
Có thể chỉ định loại cơ sở dữ liệu bắt buộc với Chú thích dữ liệu bằng cách sử dụng DataTypeAtrribute
. Một trong các nhà xây dựng của DataTypeAttribute chấp nhận thông số DataType Enumeration. Vì vậy, người ta có thể chỉ định một cái gì đó như:
[DataType(DataType.DateTime)]
public DateTime DateOfBirth {get; set;}
Loại DataType liệt kê chứa rất nhiều loại, tuy nhiên nó thiếu giá trị cho DateTime2
.
Một cách tiếp cận khác sẽ sử dụng API thông thạo. Tạo một DateTime2
trong phương pháp DBContext.OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().Property(p => p.BirthDate)
.HasColumnType("datetime2");
}
Các DataTypeAttribute có second constructor that accepts a string. Chuỗi này được định nghĩa là
Tên của mẫu trường tùy chỉnh để liên kết với trường dữ liệu.
Vì vậy, người ta sẽ cho rằng những điều sau đây sẽ là đủ để tạo ra một datetime2:
[DataType("datetime2")]
public DateTime DateOfBirth {get; set;}
Alas, điều này không làm việc. Cột được tạo vẫn có định dạng DateTime
.
Câu hỏi: chuỗi nào để sử dụng trong hàm tạo để tạo datetime2?