2016-05-03 28 views
0

我爲我的項目使用了ASP.NET Identity。用Code First自動填充列並且沒有POCO屬性

我在AspNetUsers中創建了一個直接在數據庫中的新列,名爲CreationDate,並且定義了它的默認值是當前日期並且按預期存儲。

問題是,如果我再次生成數據庫,我將需要再次創建此列。我的意思是,在生產或新環境中。

我想知道是否有可能使用fluent API的方式,我可以在OnModelCreating定義它(使用它的默認值)。

類是標識類中從模板創建ASP.NET(ApplicationDbContextApplicationUser等),我想知道這是否可能通過直接在流暢API(而不是繼承或creating all the classes)。

回答

1

如果您想使用Fluent API處理它,您需要將該屬性添加到ApplicationUser類。我不明白你爲什麼不想擴展默認屬性ApplicationUser。添加CreationDate作爲財產有將創建一個列:

public class ApplicationUser : IdentityUser 
{ 
    //This is the property that will match your column 
    public DateTime CreationDate { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType) 
    { 

     var userIdentity = await manager.CreateIdentityAsync(this, authenticationType); 

     return userIdentity; 
    } 
} 
+0

我不想延長CLASSE只是因爲我並不真正需要的任何其他方面。這個列可能只是在數據庫中看到,不需要對此進行「查看」。我理解你的解決方案,但我在考慮是否可以在Fluent API中創建一個沒有引用代碼的列(除了它的創建之外)。 –

+1

EF背後的想法是你的數據庫可以與你的模型同步(爲了做到這一點,EF必須知道你的Db中的每一個對象)。僅僅因爲你不需要在視圖中顯示該屬性並不意味着你不需要在代碼中擁有它。堅持和呈現與彼此無關。我建議你將它添加到你的代碼中,而不必創建一個每次創建數據庫後都會運行的SQL腳本(加上你以這種方式獲得源代碼控制)。 –