在不加载引用对象的情况下向对象添加对象时延迟加载

时间:2015-03-11 17:00:32

标签: c# entity-framework

我找到了关于如何使用延迟加载将对象添加到数据库而不必加载引用对象的示例,但我似乎无法使用正确的搜索关键字字符串来了解如何设置模型以使其工作

以下是一个例子:

public class Table
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Chair> Chairs { get; set; }

    public Table()
    {
        Chairs = new List<Chair>();
    }
}

public class Chair
{
    public int ID { get; set; }
    public String Name { get; set; }
    [Required]
    public Table Table { get; set; }
}

public class ChairBindModel
{
    public string Name { get; set; }
    public int TableID { get; set; }
}

public class ChairManager
{
    public Chair addChair(ChairBindModel model)
    {
        Chair toAdd = new Chair()
        {
            Name = model.Name,
            TableID = model.TableID  // how can i do this.. instead of querying database for table
        };

        using (var context = new DataContext())
        {
            context.Chairs.Add(toAdd);
            context.SaveChanges();
        }
    }
}

我希望这足够描述......谢谢

1 个答案:

答案 0 :(得分:0)

然而,有很多方法...... 如果在Chair类中声明 virtual Table属性,则确保该表是延迟加载的。如果您想要预先加载,请保留虚拟关键字。

public virtual Table Table { get;set; }

然后,如果你想&#34;链接&#34;你的两个对象,你必须把实体框架的魔术词:D 在你的主席课上:

public int TableId { get; set; }

[ForeignKey("TableId")]
public virtual Table Table { get; set; }

检查this以获取解释。