Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc .Net Core-迁移存在数据库pgSQL中出现错误42P07_Asp.net Mvc_Postgresql_.net Core - Fatal编程技术网

Asp.net mvc .Net Core-迁移存在数据库pgSQL中出现错误42P07

Asp.net mvc .Net Core-迁移存在数据库pgSQL中出现错误42P07,asp.net-mvc,postgresql,.net-core,Asp.net Mvc,Postgresql,.net Core,我在迁移到现有数据库时遇到问题 这是我的错误: 启动应用程序时出错。性别歧视: 42P07:关系“aco”已存在 Npgsql.NpgsqlConnector+c_uuudisplayClass161_0+d.MoveNext() PostgresException:42P07:关系“InclumateCao”已存在 VS2017中的图像: 实体“污染物”和“污染物”出现问题,其中“污染物”有两个“污染物”fk。看: ‘曹操’ public class Contaminacao {

我在迁移到现有数据库时遇到问题

这是我的错误:

启动应用程序时出错。性别歧视: 42P07:关系“aco”已存在 Npgsql.NpgsqlConnector+c_uuudisplayClass161_0+d.MoveNext()

PostgresException:42P07:关系“InclumateCao”已存在

VS2017中的图像:

实体“污染物”和“污染物”出现问题,其中“污染物”有两个“污染物”fk。看:

‘曹操’

public class Contaminacao
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "Campo {0} é obrigatório")] // {0} é o campo Name
        [StringLength(8, MinimumLength = 4, ErrorMessage = "O campo {0} deve ter entre {2} a {1} caracteres")]
        public string Cor { get; set; }
        [Display(Name = "Descrição")]
        [StringLength(200, MinimumLength = 5, ErrorMessage = "O campo {0} deve ter entre {2} a {1} caracteres")]
        public string Descricao { get; set; }

        public virtual ICollection<Contaminacao_Regra> Anterior_Contaminacao_Regras { get; set; } = new List<Contaminacao_Regra>();
        public virtual ICollection<Contaminacao_Regra> Proxima_Contaminacao_Regras { get; set; } = new List<Contaminacao_Regra>();

        public Contaminacao()
        {
        }

        public Contaminacao(int id, string cor, string descricao)
        {
            Id = id;
            Cor = cor;
            Descricao = descricao;
        }

        public Contaminacao(string cor, string descricao)
        {
            Cor = cor;
            Descricao = descricao;
        }
    }
由于我必须从同一实体放置两个fk,因此我进行了以下配置:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //Regra de Contaminação
            modelBuilder.Entity<Contaminacao_Regra>()
                   .HasOne(m => m.Contaminacao_Anterior)
                   .WithMany(t => t.Anterior_Contaminacao_Regras)
                   .HasForeignKey(m => m.Anterior_ContaminacaoId)
                   .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity<Contaminacao_Regra>()
                   .HasOne(m => m.Contaminacao_Proxima)
                   .WithMany(t => t.Proxima_Contaminacao_Regras)
                   .HasForeignKey(m => m.Proxima_ContaminacaoId)
                   .OnDelete(DeleteBehavior.Restrict);

            //Transferencia Produto
            modelBuilder.Entity<TransferenciaProduto>()
                   .HasOne(m => m.EstoqueOrigem)
                   .WithMany(t => t.Origem_TransferenciaProduto)
                   .HasForeignKey(m => m.EstoqueOrigemId)
                   .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity<TransferenciaProduto>()
                   .HasOne(m => m.EstoqueDestino)
                   .WithMany(t => t.Destino_TransferenciaProduto)
                   .HasForeignKey(m => m.EstoqueDestinoId)
                   .OnDelete(DeleteBehavior.Restrict);

            //Ordem Produção
            modelBuilder.Entity<OrdemProducao>()
                   .HasOne(m => m.Sequencia)
                   .WithOne(i => i.OrdemProducao)
                   .HasForeignKey<OrdemProducao_Sequencia>(b => b.OrdemProducaoId);

            // retira delete cascata
            var cascadeFKs = modelBuilder.Model.GetEntityTypes()
                .SelectMany(t => t.GetForeignKeys())
                .Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Cascade);

            foreach (var fk in cascadeFKs)
                fk.DeleteBehavior = DeleteBehavior.Restrict;

            base.OnModelCreating(modelBuilder);

        }
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
//污染资源
modelBuilder.Entity()
.HasOne(m=>m
.有许多(t=>t.前牙合)
.HasForeignKey(m=>m.ForeignKey)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity()
.HasOne(m=>m.Proxima)
.有许多(t=>t.Proxima\u污染物)
.HasForeignKey(m=>m.Proxima\u id)
.OnDelete(DeleteBehavior.Restrict);
//普罗杜托酒店
modelBuilder.Entity()
.HasOne(m=>m.EstoqueOrigem)
.有许多(t=>t.Origem_TransferenciaProduto)
.HasForeignKey(m=>m.EstoQueorigeId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity()
.HasOne(m=>m.EstoqueDestino)
.有许多(t=>t.Destino_TransferenciaProduto)
.HasForeignKey(m=>m.EstoqueDestinoId)
.OnDelete(DeleteBehavior.Restrict);
//奥德姆·普罗杜昂
modelBuilder.Entity()
.HasOne(m=>m.Sequencia)
.有一个(i=>i.OrdemProducao)
.HasForeignKey(b=>b.OrdemProducaoId);
//视网膜
var cascadeFKs=modelBuilder.Model.GetEntityTypes()
.SelectMany(t=>t.GetForeignKeys())
.Where(fk=>!fk.isoownership&&fk.DeleteBehavior==DeleteBehavior.Cascade);
foreach(级联FKS中的var fk)
fk.DeleteBehavior=DeleteBehavior.Restrict;
基于模型创建(modelBuilder);
}
在我做了这些设置之后,我犯了上面提到的错误。同样的问题也提到过,但对我帮助不大

记住,只有当银行已经存在时,错误才会发生

有人知道怎么解决吗

更新

FK_IdCorAntes和FK_IdCorDepois是“污染物”的FK

public class Contaminacao
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "Campo {0} é obrigatório")] // {0} é o campo Name
        [StringLength(8, MinimumLength = 4, ErrorMessage = "O campo {0} deve ter entre {2} a {1} caracteres")]
        public string Cor { get; set; }
        [Display(Name = "Descrição")]
        [StringLength(200, MinimumLength = 5, ErrorMessage = "O campo {0} deve ter entre {2} a {1} caracteres")]
        public string Descricao { get; set; }

        public virtual ICollection<Contaminacao_Regra> Anterior_Contaminacao_Regras { get; set; } = new List<Contaminacao_Regra>();
        public virtual ICollection<Contaminacao_Regra> Proxima_Contaminacao_Regras { get; set; } = new List<Contaminacao_Regra>();

        public Contaminacao()
        {
        }

        public Contaminacao(int id, string cor, string descricao)
        {
            Id = id;
            Cor = cor;
            Descricao = descricao;
        }

        public Contaminacao(string cor, string descricao)
        {
            Cor = cor;
            Descricao = descricao;
        }
    }