有没有办法使用代码优先在属性/列上创建索引,而不是使用新的IndexAttribute?
我想知道在Entity Framework Core 2代码第一种方法中是否存在唯一约束的数据注释?
我正在开发一个使用EFCore 2.1.0-preview1-final代码优先方法的项目。就像在 EF6(和以前的版本)中一样,我想确保我的 DbContext(和模型)与数据库的兼容性。
在 EF6 中,它默认启用,并且可以使用Database.CompatibleWithModel(false);. 据我所知,EF 使用__MigrationHistory存储模型信息的表。EFCore 在__EFMigrationsHistory表中没有可以提供此类信息的此类列。
我在 EFCore 中找不到有关兼容性检查的任何信息。但我想确保兼容性,因为经过一些测试,它似乎默认不启用(或确实存在)。我通过手动从数据库中添加和删除一些列并在修改后执行应用程序来测试它。我 - 出乎我的意料 - 没有例外。
有人知道如何实现从模型到数据库的兼容性检查,反之亦然,就像在 EF6 的 EFCore 中一样?或者可以提供一些有用的链接以获取有关它的更多信息或为什么它在 EFCore 中不存在(因为它不是必需的)?
我将EF Core 2.1.0-preview1-final CF方法与MS SQL Server 2014一起使用,并希望在一列中自动设置更新时间戳。我已经使用了,ValueGeneratedOnAdd没有任何问题。当我在数据库中插入新记录时,该InsertDateTimeUtc列具有当前UTC日期和时间值,该UpdateDateTimeUtc列具有value 0001-01-01 00:00:00.0000000,因为它是必填列。
这是我的测试模型(实体类)。
public class Person
{
public string Name { get; set; }
public DateTime InsertDateTimeUtc { get; set; }
public DateTime UpdateDateTimeUtc { get; set; }
public static void OnModelCreating(ModelBuilder modelBuilder)
{
var entity = modelBuilder.Entity<Person>();
entity.Property(p => p.Name)
.IsRequired();
entity.Property(p => p.InsertDateTimeUtc)
.HasDefaultValueSql("GETUTCDATE()")
.ValueGeneratedOnAdd()
.IsRequired();
entity.Property(p => p.UpdateDateTimeUtc)
.HasDefaultValueSql("GETUTCDATE()")
.ValueGeneratedOnUpdate()
.IsRequired();
}
}
Run Code Online (Sandbox Code Playgroud)
据我测试ValueGeneratedOnUpdate无法正常工作。如果我更新一条记录,我希望该列UpdateDateTimeUtc将获得当前的UTC日期和时间值,但不会改变。记录(property Name …
为了使我们的Azure DevOps 2019 服务器(代理)能够构建ASP.NET Core 3和.Net Core 3应用程序,我们在其上安装了Build Tools for Visual Studio 2019(expander Tools for Visual Studio 2019)。这不是最佳实践,但 Azure DevOps 2019 服务器和代理安装在同一台计算机上。
除了收集编码器覆盖率之外,一切都按预期进行。构建了应用程序并提供了工件。我们可以确认,发布后的所有工件都按预期工作。
正如已经提到的,除了代码覆盖率之外,一切都很好。
要构建的应用程序是 .NET Framework 4.6.2 应用程序,是在代理上成功安装 VS 2019 构建工具并使用 VS 2017 Enterprise 之前构建的。
Visual Studio Test为了进行测试,我们在任务之后的构建管道中使用 MSTest Visual Studio build。测试任务配置如下:
variables:
SolutionRootDirectory: 'MySolutionRoot'
SettingsFilePath: ''
BuildPlatform: 'Any CPU'
BuildConfiguration: 'Release'
steps:
- task: VSTest@2
displayName: 'Test Assemblies: $(BuildConfiguration)'
inputs:
testAssemblyVer2: |
**/*Test?(s).dll
!**/obj/**
searchFolder: '$(SolutionRootDirectory)' …Run Code Online (Sandbox Code Playgroud)