首页 > 解决方案 > 实体定义外键

问题描述

我有以下类结构,并且正在使用实体代码首先迁移来从这些类创建数据库:

public class t_ParentClass
{
    /// <summary>
    /// Unique id
    /// </summary>
    public int UNID { get; set; }
}


public class t_ChildClass
{
    /// <summary>
    /// UNID
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Event Id
    /// </summary>
    public int? ParentId { get; set; }

    /// <summary>
    /// Review event
    /// </summary>
    public t_ParentClass Parent { get; set; }
}

此设置在表上创建了一个外键列t_ChildClass

这一切都很好并且运作良好。

但是,我也Linq-to-entities用于查询这些表。

上述设置的问题是我无法执行以下操作:

var parent = context.parent.include(x => x.child);

因此,为了解决此问题,我可以将结构更改为以下内容:

public class t_ParentClass
{
    /// <summary>
    /// Unique id
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Child
    /// </summary>
    public List<t_ChildClass> Child { get; set; }
}

public class t_ChildClass
{
    /// <summary>
    /// UNID
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Event Id
    /// </summary>
    public int? ParentId { get; set; }

    /// <summary>
    /// Review event
    /// </summary>
    public t_ParentClass Parent { get; set; }
}

这里的问题是迁移现在想要向子表添加一个新列,以表示父表的新外键。

所以,我的问题是:

我怎样才能让它识别出子表中已经存在该列并将其用作父表和子表之间的链接,而不是创建一个新列。

我知道我可以接受这种做事方式,但是有些表中有数据,删除外键并重新创建有点问题。

也许我可以通过EntityTypeConfiguration课堂做到这一点?

标签: c#entity-frameworklinq-to-entitiesentity-framework-migrations

解决方案


推荐阅读