实体定义外键

时间:2018-05-04 12:00:31

标签: c# entity-framework linq-to-entities ef-migrations

我有以下类结构,我使用实体代码首次迁移从这些类创建数据库:

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课程来完成这项工作?

0 个答案:

没有答案