.net core EntityFramework核心将更改保存到数据库中
我正在将一些数据从一个旧数据库迁移到新数据库。首先使用fluentapi使用EF核心代码创建新数据库。 除一个表外,所有表都已成功迁移。在这个表上,当我想在数据库中保存一些更改时,我得到一个错误,即字段“Rejected”为null,即使它不是null。 该字段是整数类型 我还做了一些SQL分析,我发现由于某种原因,这个字段在Insert Into中丢失了 如果有人能帮助我理解为什么会发生这种情况,我将不胜感激 更新:.net core EntityFramework核心将更改保存到数据库中,.net-core,entity-framework-core,.net Core,Entity Framework Core,我正在将一些数据从一个旧数据库迁移到新数据库。首先使用fluentapi使用EF核心代码创建新数据库。 除一个表外,所有表都已成功迁移。在这个表上,当我想在数据库中保存一些更改时,我得到一个错误,即字段“Rejected”为null,即使它不是null。 该字段是整数类型 我还做了一些SQL分析,我发现由于某种原因,这个字段在Insert Into中丢失了 如果有人能帮助我理解为什么会发生这种情况,我将不胜感激 更新: public class Entries { public
public class Entries
{
public Guid Id { get; set; }
public DateTime CreateDateTime { get; set; }
public int CartonBoxId { get; set; }
public CartonBoxes CartonBox { get; set; }
public string Status { get; set; }
public string UserId { get; set; }
public ApplicationUser User { get; set; }
public int Accepted { get; set; }
public int Rejected { get; set; }
public DateTime? UpdateDateTime { get; set; }
public int MasterCodeId { get; set; }
public MasterCodes MasterCode { get; set; }
public int SubCodeId { get; set; }
public SubCodes SubCode { get; set; }
public int AqlId { get; set; }
public Aqls Aql { get; set; }
}
public DbSet<Fashions> Fashions { get; set; }
public DbSet<AqlVersions> AqlVersions { get; set; }
public DbSet<Aqls> Aqls { get; set; }
public DbSet<MasterCodes> MasterCodes { get; set; }
public DbSet<SubCodes> SubCodes { get; set; }
public DbSet<CartonBoxes> CartonBoxes { get; set; }
public DbSet<Entries> Entries { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<ApplicationUser>(entity =>
{
entity.HasMany(x => x.Entries)
.WithOne(x => x.User)
.HasForeignKey(x => x.UserId);
});
builder.Entity<Fashions>(entity =>
{
entity.HasKey(x => x.Id);
entity.Property(x => x.Id)
.ValueGeneratedOnAdd();
entity.Property(x => x.Name)
.HasMaxLength(50)
.IsRequired();
entity.HasMany(x => x.Aqls)
.WithOne(x => x.Fashion)
.HasForeignKey(x => x.FashionId);
});
builder.Entity<AqlVersions>(entity =>
{
entity.Property(x => x.Id).ValueGeneratedOnAdd();
entity.HasKey(x => x.Id);
entity.Property(x => x.Name)
.IsRequired()
.HasMaxLength(50);
entity.HasIndex(x => x.Name).IsUnique();
entity.HasMany(x => x.Aqls)
.WithOne(x => x.AqlVer)
.HasForeignKey(x => x.AqlVerId);
});
builder.Entity<Aqls>(entity =>
{
entity.Property(x => x.Id).ValueGeneratedOnAdd();
entity.HasKey(x => x.Id);
entity.HasMany(x => x.Entries)
.WithOne(x => x.Aql)
.HasForeignKey(x => x.AqlId);
});
builder.Entity<MasterCodes>(entity =>
{
entity.Property(x => x.Id).ValueGeneratedOnAdd();
entity.HasKey(x => x.Id);
entity.Property(x => x.Code)
.IsRequired()
.HasMaxLength(50);
entity.Property(x => x.Eng)
.HasMaxLength(50);
entity.Property(x => x.Srb)
.HasMaxLength(50);
entity.HasMany(x => x.SubCodes)
.WithOne(x => x.MasterCodes)
.HasForeignKey(x => x.MasterCodeId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasMany(x => x.Entries)
.WithOne(x => x.MasterCode)
.HasForeignKey(x => x.MasterCodeId);
});
builder.Entity<SubCodes>(entity =>
{
entity.Property(x => x.Id).ValueGeneratedOnAdd();
entity.HasKey(x => x.Id);
entity.Property(x => x.Code)
.IsRequired()
.HasMaxLength(50);
entity.Property(x => x.Eng)
.HasMaxLength(50);
entity.Property(x => x.Srb)
.HasMaxLength(50);
entity.HasMany(x => x.Entries)
.WithOne(x => x.SubCode)
.HasForeignKey(x => x.SubCodeId)
.OnDelete(DeleteBehavior.Restrict);
});
builder.Entity<CartonBoxes>(entity =>
{
entity.HasKey(x => x.Id);
entity.Property(x => x.Id).ValueGeneratedOnAdd();
entity.Property(x => x.CartonBox)
.IsRequired()
.HasMaxLength(50);
entity.Property(x => x.ManuallyStatus)
.HasMaxLength(20);
entity.Property(x => x.Sku)
.HasMaxLength(20);
entity.Property(x => x.Po)
.HasMaxLength(50);
entity.HasMany(x => x.Entries)
.WithOne(x => x.CartonBox)
.HasForeignKey(x => x.CartonBoxId);
});
builder.Entity<Entries>(entity =>
{
entity.HasKey(x => x.Id);
entity.Property(x => x.Id)
.ValueGeneratedOnAdd();
entity.Property(x => x.Status)
.HasMaxLength(50);
entity.Property(x => x.UpdateDateTime)
.IsRequired(false);
entity.Property(x => x.Accepted)
.HasDefaultValue();
entity.Property(x => x.Rejected)
.HasDefaultValue();
entity.Property(x => x.MasterCodeId)
.HasDefaultValue(null);
entity.Property(x => x.SubCodeId)
.HasDefaultValue(null);
});
base.OnModelCreating(builder);
公共类条目
{
公共Guid Id{get;set;}
公共日期时间CreateDateTime{get;set;}
公共int CartonBoxId{get;set;}
公共纸盒纸盒{get;set;}
公共字符串状态{get;set;}
公共字符串用户标识{get;set;}
公共应用程序用户{get;set;}
公共int接受{get;set;}
公共int被拒绝{get;set;}
公共日期时间?UpdateDateTime{get;set;}
公共int主代码ID{get;set;}
公共主代码主代码{get;set;}
公共int子码id{get;set;}
公共子代码子代码{get;set;}
公共int-AqlId{get;set;}
公共Aql Aql{get;set;}
}
公共数据库集样式{get;set;}
公共数据库集aqlversion{get;set;}
公共数据库集Aqls{get;set;}
公共数据库集主代码{get;set;}
公共数据库集子代码{get;set;}
公共DbSet纸箱{get;set;}
公共数据库集项{get;set;}
公共应用程序DBContext(DbContextOptions选项)
:基本(选项)
{
}
模型创建时受保护的覆盖无效(ModelBuilder)
{
builder.Entity(Entity=>
{
entity.HasMany(x=>x.Entries)
.WithOne(x=>x.User)
.HasForeignKey(x=>x.UserId);
});
builder.Entity(Entity=>
{
entity.HasKey(x=>x.Id);
entity.Property(x=>x.Id)
.ValueGeneratedOnAdd();
entity.Property(x=>x.Name)
.HasMaxLength(50)
.IsRequired();
entity.HasMany(x=>x.Aqls)
.WithOne(x=>x.Fashion)
.HasForeignKey(x=>x.FashionId);
});
builder.Entity(Entity=>
{
Property(x=>x.Id).ValueGeneratedOnAdd();
entity.HasKey(x=>x.Id);
entity.Property(x=>x.Name)
.IsRequired()
.HasMaxLength(50);
entity.HasIndex(x=>x.Name).IsUnique();
entity.HasMany(x=>x.Aqls)
.带一个(x=>x.AqlVer)
.HasForeignKey(x=>x.AqlVerId);
});
builder.Entity(Entity=>
{
Property(x=>x.Id).ValueGeneratedOnAdd();
entity.HasKey(x=>x.Id);
entity.HasMany(x=>x.Entries)
.有一个(x=>x.Aql)
.HasForeignKey(x=>x.AqlId);
});
builder.Entity(Entity=>
{
Property(x=>x.Id).ValueGeneratedOnAdd();
entity.HasKey(x=>x.Id);
entity.Property(x=>x.Code)
.IsRequired()
.HasMaxLength(50);
entity.Property(x=>x.Eng)
.HasMaxLength(50);
entity.Property(x=>x.Srb)
.HasMaxLength(50);
entity.HasMany(x=>x.subcode)
.带一个(x=>x.主代码)
.HasForeignKey(x=>x.MasterCodeId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasMany(x=>x.Entries)
.WithOne(x=>x.MasterCode)
.HasForeignKey(x=>x.MasterCodeId);
});
builder.Entity(Entity=>
{
Property(x=>x.Id).ValueGeneratedOnAdd();
entity.HasKey(x=>x.Id);
entity.Property(x=>x.Code)
.IsRequired()
.HasMaxLength(50);
entity.Property(x=>x.Eng)
.HasMaxLength(50);
entity.Property(x=>x.Srb)
.HasMaxLength(50);
entity.HasMany(x=>x.Entries)
.WithOne(x=>x.SubCode)
.HasForeignKey(x=>x.SubCodeId)
.OnDelete(DeleteBehavior.Restrict);
});
builder.Entity(Entity=>
{
entity.HasKey(x=>x.Id);
Property(x=>x.Id).ValueGeneratedOnAdd();
Property(x=>x.CartonBox)
.IsRequired()
.HasMaxLength(50);
Property(x=>x.ManuallyStatus)
.HasMaxLength(20);
entity.Property(x=>x.Sku)
.HasMaxLength(20);
entity.Property(x=>x.Po)
.HasMaxLength(50);
entity.HasMany(x=>x.Entries)
.带一个(x=>x.CartonBox)
.HasForeignKey(x=>x.CartonBoxId);
});
builder.Entity(Entity=>
{
entity.HasKey(x=>x.Id);
entity.Property(x=>x.Id)
.ValueGeneratedOnAdd();
entity.Property(x=>x.Status)
.HasMaxLength(50);
属性(x=>x.UpdateDateTime)
.i被要求(虚假);
entity.Property(x=>x.Accepted)
.HasDefaultValue();
entity.Property(x=>x.Rejected)
.HasDefaultValue();
Property(x=>x.MasterCodeId)
.HasDefaultValue(空);
entity.Property(x=>x.SubCodeId)
.HasDefaultValue(空);
});
基于模型创建(生成器);
问题是hasdaultvalue
:
entity.Property(x => x.Rejected)
.HasDefaultValue();
当属性值等于默认值speci时,EF Core不会包含在用HasDefaultValue
标记的insert命令属性中