2012-03-06 38 views
6

Tôi đang phát triển ứng dụng dựa trên Khuôn khổ thực thể. Tôi đang sử dụng phương pháp tiếp cận mô hình đầu tiên. Tôi muốn xử lý các vấn đề tương tranh. Như được viết trong nhiều bài viết, tôi sẽ làm điều đó bằng cách chuyển ConcurrencyMode thành cố định trên một trường là dấu thời gian. Tại thời điểm này tôi đang đối mặt với vấn đề - Tôi không thể thêm trường (cột) của dấu thời gian loại. Làm thế nào tôi có thể làm điều đó trong mô hình?Mô hình khung thực thể dấu thời gian đầu tiên

Theo văn bản ở đây:

http://social.msdn.microsoft.com/Forums/is/adodotnetentityframework/thread/1ed8d1e4-9d78-4593-9b10-33e033837af8 \

tôi đã cố gắng installiing Entity thiết kế cơ sở dữ liệu thế hệ Power Pack, nhưng tôi vẫn thấy không có khả năng để có timestamp tạo ra từ các mô hình (Tôi thậm chí còn cố gắng thiết lập nó bằng tay trong tập tin edmx, nhưng tôi vẫn không nhận được dấu thời gian trong các cơ sở dữ liệu được tạo ra).

Vui lòng trợ giúp.

Trả lời

2

Tôi nghĩ rằng kiểu dấu thời gian cơ sở dữ liệu ánh xạ thành kiểu thuộc tính nhị phân trong EF.

Cột dấu thời gian của mô hình của tôi là loại Nhị phân có chiều dài 8, độ dài cố định đúng, StoreGenratedPattern được tính toán.

EDIT: Thực ra không thể thực hiện mà không thay đổi mẫu t4 như đã giải thích ở đây: Entity Framework timestamp Generate Database issue

0

EF 6.1, tôi có điều này:

public partial class DepartmentEFEntity 
{ 

    Guid DepartmentUUID { get; set; } 

    public byte[] TheVersionProperty { get; set; } 
} 

và sau đó:

 modelBuilder.Entity<DepartmentEFEntity>().Property(o => o.TheVersionProperty).HasColumnType("timestamp").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed).IsRowVersion(); 

Khi tôi kịch bản ra khỏi bàn, tôi nhận được điều này:

CREATE TABLE [dbo].[Department](
    [DepartmentUUID] [uniqueidentifier] NOT NULL, 
    [TheVersionProperty] [timestamp] NOT NULL 
    ) 
Các vấn đề liên quan