Aha! Đồng nghiệp tuyệt vời của tôi đã có một ý tưởng và nó đã hoạt động!
Trong mã EF của mình, chúng tôi đã thử đặt
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EntityClass>().Property(p => p.TIMESTAMP).HasPrecision(6);
}
Và sau đó là DateTime.Now
với mili giây được lưu trữ vào cơ sở dữ liệu
Cập nhật - điều đáng nói là tôi đã lâm vào tình trạng khó khăn này như thế nào
Xây dựng cơ sở dữ liệu với Model First trong ứng dụng "thử nghiệm"
- Ứng dụng của tôi phải hoạt động với cả SQL Server và Oracle. Vì vậy ...
- Tôi đã bắt đầu bằng cách thiết kế cơ sở dữ liệu của mình trong Sơ đồ EDMX
- Sau khi hoàn tất sơ đồ, tôi đã tạo DDL cho SQL Server.
-
Vì một số lý do mà nhà cung cấp Oracle EF không thể tạo DDL nên tôi đã tiến hành thực hiện các thay đổi đối với SQL Server DDL theo cách thủ công để nó đúng cú pháp
Vấn đề đầu tiên - Oracle DDL của tôi đã sử dụng Ngày thay vì Dấu thời gian. Hãy chắc chắn rằng bạn sử dụng Dấu thời gian !!! DateTime trong Oracle không lưu trữ mili giây.
Sử dụng Mã trước từ Cơ sở dữ liệu cho giải pháp thực tế
- Tôi muốn ứng dụng sử dụng cách tiếp cận Code First (Chỉ là tùy chọn của tôi. Tôi nghĩ nó dễ duy trì hơn)
- Vì vậy, tôi đã kết nối với cơ sở dữ liệu SQL Server và tạo tất cả các lớp của mình từ giản đồ đó.
- Tôi đã vượt qua tất cả các bài kiểm tra đơn vị của mình và sau đó quyết định kiểm tra nó với cơ sở dữ liệu Oracle
- Ngay cả sau khi thay đổi từ DATE thành Dấu thời gian, tôi vẫn gặp sự cố với phần nghìn giây trôi qua.
- Tôi đã tạo một mô hình Code First khác trong giải pháp studio trực quan thử nghiệm với
TIMESTAMP(6)
gõ vào Oracle, ngoại trừ khi tôi nhìn vàoOnModelCreating
mã, nó không tạo ra bất kỳ thứ gì vớiHasPrecision(6)
cũng như không có bất kỳ người trang trí nào trên sản phẩm trong lớp C # POCO đã tạo. - Tôi nhận thấy nếu bạn có
HasPrecision(6)
mã trongOnModelCreating
của bạn , Mã đầu tiênCreateDatabase()
sẽ thực sự tạo ra một OracleTIMESTAMP(6)
. Nếu bạn không, thì nhà cung cấp Oracle EF sẽ sử dụngDATE
Tôi nghĩ rằng nếu bạn thực hiện phương pháp Tiếp cận Mô hình Đầu tiên, bạn có thể đặt các giá trị chính xác trong biểu đồ EDMX, nhưng tôi nghe nói rằng đó là một phương pháp không tốt.