所以使用实体框架 1.1 我有这样的实体
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之外,我似乎在文档中找不到任何内容。
谢谢
我没有找到任何关于这些变化的说法。但可以在 EF Core 2.0 中改用以下代码。
.HasDefaultValueSql("CURRENT_TIMESTAMP");
昨天将测试项目升级到EF Core 2.0后,我遇到了类似的问题,就我而言,数据库不是SQLite,而是MS SQL Server。
我不得不更换
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中直观地检查新创建的列定义来对其进行测试。