2017-08-15 88 views
1

因此,與實體框架1.1我有實體這樣實體框架的核心2不看SQLite的擴展

modelBuilder.Entity<Resolution>() 
     .Property(r => r.Created) 
     .ValueGeneratedOnAddOrUpdate() 
     .ForSqliteHasColumnType("Timestamp")    
     .ForSqliteHasDefaultValueSql("CURRENT_TIMESTAMP"); 

modelBuilder.Entity<Resolution>() 
     .Property(r => r.Updated) 
     .ForSqliteHasColumnType("Timestamp") 
     .IsRequired(); 

它工作得很好。升級到.net核心2.0和實體框架2.0後,

.ForSqliteHasColumnType("Timestamp") 

似乎不再可用。事實上,所有的「ForSqlite *」功能都不存在。

我將「Microsoft.EntityFrameworkCore.Sqlite」升級到2.0。我有

using Microsoft.EntityFrameworkCore; 

他們有什麼改變嗎?我似乎無法找到其他文檔中的任何內容,那麼sql提供程序不能向後兼容.NET Core 1.1。

謝謝

+1

那些方法。 https://github.com/aspnet/EntityFramework/issues/8923#issuecomment-310242378的一部分涵蓋了它。 – Smit

回答

2

我沒有找到任何有關變化的說。但是您可以在EF Core 2.0中使用下面的代碼。

.HasDefaultValueSql("CURRENT_TIMESTAMP"); 
0

我有一個類似的問題,昨天2.0升級到testproject EF核心後,在我的情況下,數據庫不是SQLite的,但MS SQL服務器。

我不得不更換

b.Property(e => e.StartDate).IsRequired().ForSqlServerHasColumnType("Date"); 
b.Property(e => e.LastModified).IsRequired().ForSqlServerHasColumnType("SmallDateTime"); 

有:

b.Property(e => e.StartDate).IsRequired().HasColumnType("Date"); 
b.Property(e => e.LastModified).IsRequired().HasColumnType("SmallDateTime"); 

但在那之後它再次合作。我通過重新創建數據庫並在MS SQL Server Management Studio中直觀地檢查新創建的列定義來測試它。在2.0版本中除去

+0

是的,這就是我最終做的。 –