微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

在我的应用程序中,两个实体(ChartOfAccount & GL)之间存在多对多关系。创建关系后,将创建一个新表(ChartOfAccountGLs)。现在,我尝试创建一个新类来映射具有一对多关系(ChartOfAccountGL-->ChartOfAccount & ChartOfAccounGL-->GL)的这两个实体。但是当我尝试更新时,数据库软件包管理器控制台给出了此错误

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

下面显示了我的 ChartOfAccountGL 类:

[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; }
}

ChartOfAccountGLConfiguration:

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);
    }
}

有人知道我在哪里做错了吗?

解决方法

升级模型时这是一个已知问题。在EF6中,您可以使用忽略更改,但在ef核心中,请检查以下内容: https://github.com/dotnet/efcore/issues/4237

当前生成迁移时,没有IgnoreChanges等效项。不在Powershell上,或使用ef迁移添加。这需要进入EF7,并且是迁移工作的基础部分,特别是对于使用现有表的应用程序。

如果您使用的是ef core,请尝试这样做(根据问题中的评论):

这可能只是显而易见的事情……但是,作为暂时的解决方法,您可以生成一个迁移,然后从Up / Down方法中删除代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。