![](/img/trans.png)
[英]Breakpoint not hit in EF Core IEntityTypeConfiguration class on add-migration in PackageManagerConsole
[英]EF 2.1 Core IEntityTypeConfiguration Add default value
我使用EF Core 2.1來創建數據庫。 我可以設置列的默認值
public class SchoolContext : DbContext
{
....
protected override void OnModelCreating(ModelBuilder modelBuilder) {
....
modelBuilder.Entity<Student>().Property(s => s.LastLoginDateTime).HasDefaultValueSql("SYSUTCDATETIME()");
}
....
}
但是,當我嘗試使用IEntityTypeConfiguration
設置默認值時,我得到構建錯誤消息(打印在下面的代碼中)。 我知道HasDefaultValueSql()
在IEntityTypeConfiguration<>
不可用。
我該如何解決這個限制? 順便說一下,我跟隨Scott Sauber在他的'定制EF Core 2.0+實體/表映射與IEntityTypeConfiguration - 2017年9月11日'來創建我的SchoolContext
。
https://scottsauber.com/2017/09/11/customizing-ef-core-2-0-with-ientitytypeconfiguration/
我的代碼:
public class StudentConfig : IEntityTypeConfiguration<Student>
{
public void Configure (EntityTypeBuilder<Student> builder)
{
....
// Error CS1061 'PropertyBuilder<DateTime>' does
// not contain a definition for 'HasDefaultValueSql'
// and no extension method 'HasDefaultValueSql'
// accepting a first argument of Type 'PropertyBuilder<DateTime>'
// could be found (are you missing a using directive
// or an assembly reference?)
// Data C:\Users\Paul\source\repos\School\Data\EFClasses
// \Configurations\StudentConfig.cs 22 Active
builder.Entity<Student>().Property(s => s.RecIn).HasDefaultValueSql("SYSUTCDATETIME()");
....
}
}
Configure
方法的builder
參數類型是EntityTypeBuilder<T>
,與ModelBuilder.Entity<T>
方法返回的完全相同。
因此,當使用IEntityTypeConfiguration<T>
,您應該直接使用builder
(沒有用於ModelBuilder
builder
Entity<T>()
調用):
public class StudentConfig : IEntityTypeConfiguration<Student>
{
public void Configure(EntityTypeBuilder<Student> builder)
{
builder.Property(s => s.LastLoginDateTime).HasDefaultValueSql("SYSUTCDATETIME()");
}
}
順便說一句, ModelBuilder.Entity<T>()
方法有Action<EntityTypeBuilder<T>
參數的重載,它可以以類似的方式使用:
modelBuilder.Entity<Student>(builder =>
{
builder.Property(s => s.LastLoginDateTime).HasDefaultValueSql("SYSUTCDATETIME()");
});
更新:請注意, HasDefaultValueSql
是Microsoft.EntityFrameworkCore.Relational 程序集中RelationalPropertyBuilderExtensions
類中定義的擴展方法,因此請確保您的項目引用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.