簡體   English   中英

如何將RowVersion屬性添加到EF4類

[英]How do I add a RowVersion attribute to a EF4 class

我正在使用EF4並通過Entity設計表面創建類,然后從它們生成數據庫。 我想為某些類添加一個屬性,以顯示它們上次更新的時間戳。

我已經為它們添加了一個Version屬性,但是我不知道與它們關聯哪個.Net數據類型,因此它們在生成時會成為數據庫中的Timestamp或RowVersion。

有任何想法嗎?

您將byte[]類型用於rowversion / timestamp

使用示例: http//www.ienablemuch.com/2011/07/using-checkbox-list-on-aspnet-mvc-with_16.html

如果您在設計器中,只需鍵入byte[]System.Byte[] ,我認為可以輸入EF設計器上的字段類型下拉選擇。

鑒於此DDL

create table Movie
(
MovieId int identity(1,1) not null primary key,
MovieName varchar(100) not null unique,
MovieDescription varchar(100) not null unique,
YearReleased int not null,
Version rowversion  -- rowversion and timestamp are alias of each other
);

這是類映射:

public class Movie
{
    [Key]
    public virtual int MovieId { get; set; }
     
    [   Required, Display(Name="Title")
    ]   public virtual string MovieName { get; set; }
     
    [   Required, Display(Name="Description")
    ]   public virtual string MovieDescription { get; set; }
     
    [   Required, Display(Name="Year Released"), Range(1900,9999)
    ]   public virtual int? YearReleased { get; set; }
     
    [Timestamp]
    // byte[] is the rowversion/timestamp .NET type
    public virtual byte[] Version { get; set; }  
 
     
    public virtual IList<Genre> Genres { get; set; }              
}

據我所知,rowversion是一個相對二進制值,而不是實際時間值。 它會針對每次發生的插入和更新而遞增。 這允許您比較值以確定哪個記錄更新。 由於它是相對的,給定一個rowversion值,你什么都不知道,但是給定兩個rowversion值,你會知道哪個更舊,哪個更新,但不知道多少。

我不知道與它們關聯哪個.Net數據類型,因此它們在生成時會成為數據庫中的Timestamp或RowVersion。

我不確定,但很可能沒有一種數據類型可以在從模型到數據庫時為你提供rowversion。 您必須自己更改數據庫字段類型,或將字段添加到數據庫並將記錄添加到模型中。 您還可以生成DDL,然后在使用它創建數據庫之前對其進行修改。

還有另一種方法,您可以通過從它的類派生來擴展EF過程的功能。 然后你可以自己選擇它,但我不太熟悉如何做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM