我有一个以下型号,其中“位置”为外键来自表格位置
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
如果我在呼叫位置时如何自动启动查询...
答案 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; }
}