我的简单课程有问题。我班级的一个属性是对另一个班级的引用,但是当我读到它时,它总是为空。
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Description { get; set; }
public virtual Trademark Trademark { get; set; }
}
public class Trademark
{
public int TrademarkId { get; set; }
public String Description { get; set; }
}
这些是我的课程,非常简单。 然后,当我得到第一个元素时:
Product p = context.Products.First();
p
包含正确的产品,但商标为空。
即使我想使用linq进行查询,例如:
var prods = context.Products.Where(p => p.Trademark.TrademarkId == 1).ToList();
生成数据库确定。
使用EF 4.3.1,使用SqlServer compact Edition 4.0
感谢您的任何建议。
添加:这是我的上下文类:
public class HPContext : DbContext
{
public HPContext()
: base()
{
this.Configuration.LazyLoadingEnabled = false; //Just for test
}
public DbSet<Product> Products { get; set; }
public DbSet<Trademark> Trademarks { get; set; }
}
添加:数据库架构:
Table:
Products
Fields:
Id int primaryKey
Description nvarchar(4000)
Trademark_TrademarkId int
Table:
Trademarks
Fields:
TrademarkId int PrimaryKey
Description nvarchar(4000)
答案 0 :(得分:3)
如果未启用延迟加载,则应使用Include
包含导航属性;
Product p = context.Products.Include("TradeMark").First();