7

Tôi có một bảng với các cột DateCreatedDateUpdated và sử dụng Khuôn khổ thực thể để chèn/cập nhật giá trị vào cơ sở dữ liệu.Cột khung thời gian thực thể - Giá trị GetDate() Chèn

Tôi cần cột DateCreated để nhận giá trị GetDate() của Máy chủ SQL chỉ khi chèn.

DateUpdated giá trị cột phải luôn được cập nhật với giá trị hiện tại GetDate() khi chèn và cập nhật cả hai.

Đối với cột DateCreated, tôi đã đặt StoreGeneratedPattern="Computed" và trên bảng SQL Server tôi đã đặt giá trị mặc định của cột là GetDate(), hoạt động tốt như mong đợi.

Đối với cột DateUpdated Tôi không thể tìm cách để tự động đặt giá trị GetDate() mỗi khi mục nhập được cập nhật. Giá trị này được thiết lập chỉ khi một mục được chèn vào.

Ai đó có thể làm sáng tỏ điều này.

+0

Các bạn đã thử 'StoreGeneratedPattern = "Identity" '? –

+1

tại sao không được cập nhật như là mặc định db cho công việc datecreated? nó không nên ghi đè lên nó nếu bạn không cập nhật nó ... –

+0

Tôi đồng ý với DMoses - giá trị mặc định chỉ được điền vào việc tạo hàng. –

Trả lời

7

Nếu bạn muốn DateUpdated được đặt bởi cơ sở dữ liệu, bạn có thể sử dụng trình kích hoạt để đặt giá trị thành getdate(). Tôi tin rằng EF cũng sẽ nhận được giá trị được đặt bởi trình kích hoạt nếu bạn đặt StoreGeneratedPattern="Computed" cho DateUpdated.

Để tham khảo, kích hoạt của bạn sẽ giống như thế này (bạn sẽ phải cập nhật mỗi PK của bảng của bạn):

create trigger MyTable_UpdatedTrigger 
on MyTable 
for update 
as 
begin 
    update t set DateUpdated = getdate() 
    from MyTable t 
     join inserted i on t.Id = i.Id 
end 
Các vấn đề liên quan