首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EntityFramework核心SavingChanges导入数据库

将EntityFramework核心SavingChanges导入数据库
EN

Stack Overflow用户
提问于 2018-03-21 08:05:37
回答 1查看 61关注 0票数 1

我正在将数据从一个旧数据库迁移到新数据库。新的数据库是用EF核心代码创建的-首先使用Fluent API。所有表都已成功迁移,期望一个表。在这个表上,当我想在数据库中保存一些更改时,我会得到一个错误,即“拒绝”字段为空,即使是非空字段。

该字段为整数类型。

此外,我还做了一些SQL分析,我发现由于某些原因,在Insert中缺少这个字段。

任何帮助,以了解为什么会发生这种情况,我将感激。

更新:

代码语言:javascript
复制
 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 09:59:49

问题是HasDefaultValue

代码语言:javascript
复制
entity.Property(x => x.Rejected)
                .HasDefaultValue();

当属性值等于指定的默认值时,EF将不包括在带有HasDefaultValue标记的insert命令属性中(在您的示例中为0)。

我建议完全不使用HasDefaultValue / HasDefaultValueSql,除非数据库表中的对应列具有默认表达式。如果您不想要类似的惊喜,也可以从其他属性中删除它。

请参阅文档的默认值部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49401028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档