ASP MVC Init模型的外国数据

时间:2012-11-24 19:39:40

标签: asp.net-mvc entity-framework asp.net-mvc-4

我有一个以下型号,其中“位置”为外键来自表格位置

 public class Restaurant
{
    public int id{ get; set; }
    public string  name{ get; set; }
    public ICollection<Locations> locations { get; set; }
}

为什么当我初始化我的模型餐厅时,位置设置为null,除非我在调用属性之前调用位置数据库上下文 例如:

 var t = db.Restaurant.First(); // the locations attribute is null
 db.Locations.First(); // calling the locations db context
 t; // now t.locations has one record without adding anything just loading the DB

如果我在呼叫位置时如何自动启动查询...

3 个答案:

答案 0 :(得分:0)

修改你的get访问者。

get
{
  if(!_locations.Any()
  _locations.Add(db.Locations.First();
  return _locations;
}

答案 1 :(得分:0)

你要求的是延迟加载功能。你用什么来进行数据访问(我猜EF)。如果您使用EF,则应启用延迟加载。但要小心,由于懒加载可能是邪恶的功能。

到目前为止,如果您想要将所有位置与餐厅对象一起使用,您可以自动填写餐厅构造函数中的位置:

public class Restaurant
{
    public Restaurant() {
       // fill locations
    }

    public int id{ get; set; }
    public string  name{ get; set; }
    public ICollection<Locations> locations { get; set; }
}

答案 2 :(得分:0)

使用以下代码:

public class Restaurant
{
    public Restaurant()
    {
        locations = new List<Locations>();
    }

    public int id{ get; set; }
    public string  name{ get; set; }
    public ICollection<Locations> locations { get; set; }
}