实体框架在父母知道的情况下插入子记录

时间:2015-08-20 13:09:54

标签: c# asp.net entity-framework

我有这个问题,我在插入子记录,在数据库中导航栏是null,而不是引用父Id

我该如何解决这个问题?

AdminConfiguration

中只有1条记录

模型

public class AdminConfiguration : Entity
{
    public virtual List<ApplicationConfiguration> ApplicationConfiguration { get; set; }
}

儿童

public class ApplicationConfiguration : Entity
{
    public Applications Application { get; set; }
    public string ApiKey { get; set; }
    public string IpAddress { get; set; }
    public int Port { get; set; }
    public string HttpScheme { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
}

插入代码

public ApplicationConfiguration Insert(ApplicationConfiguration entity)
{
    Db.ApplicationConfiguration.Add(entity);
    Db.SaveChanges();
    return entity;
}

插入后DB的样子:

ID | Other columns | AdminConfiguration_Id
1  | Other values  | NULL

1 个答案:

答案 0 :(得分:3)

您需要在ApplicationConfiguration实体上使用适当的导航属性,以便EF可以映射关系,我个人也会创建如下所示的外键属性,因为通常更容易指定相关的实体ID而不必填充导航属性。

public class ApplicationConfiguration : Entity
{
    public Applications Application { get; set; }
    public string ApiKey { get; set; }
    public string IpAddress { get; set; }
    public int Port { get; set; }
    public string HttpScheme { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public virtual AdminConfiguration AdminConfiguration { get; set; }
    [ForeignKey("AdminConfiguration")]
    public int AdminConfigurationId { get; set; }
}

这将删除AdminConfiguration_Id列,而是创建一个AdminConfigurationId列,这些列将映射到您班级的属性。