2012-03-06 18 views
6

Tworzę aplikację opartą na Entity Framework. Używam podejścia wzorcowego. Chciałbym poradzić sobie z problemami współbieżności. Jak napisałem w wielu artykułach, zrobię to, obracając ConcurrencyMode do ustalonego na polu, który jest znacznikiem czasu. W tej chwili mam do czynienia z problemem - nie mogę dodać pola (kolumny) typu timestamp. Jak mogę to zrobić w modelu?Pierwszy znacznik czasu modelu jednostki

Jako napisane:

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

Próbowałem installiing Podmiot Projektant Database Generation Power Pack, ale nadal nie widzę możliwości, aby mieć znacznik czasu wygenerowany z modelu (mam nawet próbował ustawienie go ręcznie w pliku edmx, ale nadal nie otrzymuję znacznika timestamp w wygenerowanej bazie danych).

Proszę o pomoc.

Odpowiedz

2

Myślę, że znacznik czasu typu bazy danych mapuje do typu właściwości binarnej w EF.

Kolumna sygnatury czasowej mojego modelu jest typu Binary o długości 8, stała długość true, StoreGenratedPattern jest obliczona.

EDIT: Właściwie nie jest możliwe bez zmiany szablonu t4 jak wyjaśniono tutaj: Entity Framework timestamp Generate Database issue

0

EF 6.1, mam to:

public partial class DepartmentEFEntity 
{ 

    Guid DepartmentUUID { get; set; } 

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

, a następnie:

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

Kiedy skrypt na stole, otrzymuję to:

CREATE TABLE [dbo].[Department](
    [DepartmentUUID] [uniqueidentifier] NOT NULL, 
    [TheVersionProperty] [timestamp] NOT NULL 
    ) 
Powiązane problemy