Mọi người có thể tranh luận rằng điều này phù hợp hơn với tư cách là một bình luận, nhưng về cơ bản, điều đó sẽ lâu dài.
Và:
Bạn sẽ phải giúp tôi một chút vì tôi không có hệ thống làm việc trong tay, vì vậy tôi đang làm việc này từ đỉnh cao của mình. (và tôi đang hơi vội vàng)
Đầu tiên, hãy bắt đầu với một thuộc tính không được ánh xạ:
[NotMapped]
public DateTime ExpiryDate { get; set; }
Thuộc tính này không được ánh xạ. Nó có thể dẫn đến một số lỗi liên quan đến cơ sở dữ liệu không khớp với mô hình, nhưng chúng tôi có thể khắc phục điều đó. Thuộc tính này sẽ không được tự động điền khi truy vấn dữ liệu. Vì vậy, chúng ta cần một cách để tự mình giải quyết vấn đề này.
Ví dụ:( đó là một ví dụ xấu vì chúng tôi cần ngữ cảnh trong thực thể ở đâu đó ):
[NotMapped]
public DateTime? ExpiryDate
{
get
{
//of course you'll need some caching here
var s = context.Database.SqlQuery<string>("query to select datetime as string");
//additional logic to determine validity:
if (s == "0000-00-00")
return null;
//else:
//do the conversion
}
}
Câu hỏi cơ bản ở đây; bạn muốn đi bao xa để hỗ trợ điều này trong khuôn khổ EF? Bạn chỉ cần đọc hay viết bằng cách sử dụng trình theo dõi thay đổi của EF, v.v.?
Có những chức vụ khác, chẳng hạn, để thực hiện một CAST nvarchar trong chính SQL để lấy dữ liệu và xử lý thêm.
Có thể là ModelBuilder
tiết lộ một số tùy chọn bổ sung.