如何使用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方法中删除代码