Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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/7/sql-server/24.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
如何使用c#Fluent API将新类映射到现有表?_C#_Sql Server_Database_Entity Framework_Ef Fluent Api - Fatal编程技术网

如何使用c#Fluent API将新类映射到现有表?

如何使用c#Fluent API将新类映射到现有表?,c#,sql-server,database,entity-framework,ef-fluent-api,C#,Sql Server,Database,Entity Framework,Ef Fluent Api,在我的应用程序中,两个实体之间存在多对多关系(ChartOfAccount&GL)。一旦我创建了关系,就会创建一个新表(chartofcountgls)。现在我尝试创建一个新类来映射具有一对多关系的这两个实体(chartoCountGL-->chartoCount&chartoCountGL-->GL)。但当我尝试更新时,数据库包管理器控制台出现了这个错误 “中已存在一个名为'FK_dbo.ChartOfAccountGLs_dbo.ChartOfAccounts_ChartOfAccountI

在我的应用程序中,两个实体之间存在多对多关系
(ChartOfAccount&GL)
。一旦我创建了关系,就会创建一个新表
(chartofcountgls)
。现在我尝试创建一个新类来映射具有一对多关系的这两个实体
(chartoCountGL-->chartoCount&chartoCountGL-->GL)
。但当我尝试更新时,数据库包管理器控制台出现了这个错误

“中已存在一个名为'FK_dbo.ChartOfAccountGLs_dbo.ChartOfAccounts_ChartOfAccountId'的对象。” 数据库。无法创建约束或索引。请参阅以前的错误。“

下面显示了我的科目表GL课程:

[Table("ChartOfAccountGLs")]
public class ChartOfAccountGL
{
    public int ChartOfAccountId { get; set; }
    public int GLId { get; set; }

    public ChartOfAccount ChartOfAccount { get; set; }
    public GL GL { get; set; }
}
ChartoCountGLConfiguration:

public class ChartOfAccountGLConfiguration : EntityTypeConfiguration<ChartOfAccountGL>
{
    public ChartOfAccountGLConfiguration()
    {
        //Define two composite keys
        HasKey(k => new { k.ChartOfAccountId, k.GLId });

        Property(a => a.ChartOfAccountId)
            .HasColumnName("ChartOfAccountId");

        Property(b => b.GLId)
            .HasColumnName("GLId");

        //Mapping classes
        HasRequired(a => a.ChartOfAccount)
            .WithMany(b => b.ChartOfAccountGL);

        HasRequired(f => f.GL)
            .WithMany(b => b.ChartOfAccountGL);
    }
}
公共类ChartofCountGLConfiguration:EntityTypeConfiguration
{
公共配置
{
//定义两个组合键
HasKey(k=>new{k.chartofcountid,k.GLId});
属性(a=>a.ChartOfAccountId)
.HasColumnName(“ChartofcountId”);
属性(b=>b.GLId)
.HasColumnName(“GLId”);
//映射类
HasRequired(a=>a.chartofcount)
.有许多(b=>b.chartofcountgl);
HASSrequired(f=>f.GL)
.有许多(b=>b.chartofcountgl);
}
}

有人知道我在哪里犯的错误吗???

这是升级模型时的已知问题。在EF6中,您可以使用“忽略更改”,但在ef core中,请选中此项:

现在生成迁移时,IgnoreChanges没有等效项。不在powershell上,也不使用ef迁移添加。这需要用到EF7,并且是迁移工作的基本部分,特别是对于使用现有表的应用程序

如果您使用的是ef core,请尝试以下方法(从本期的评论中):

这可能只是说明显而易见的。。。但作为目前的一种解决方法,您可以生成一个迁移,然后从Up/Down方法中删除代码