2

我有一个简单的类的问题。我的类的一个属性是对另一个类的引用,但是当我阅读时,它始终为空。

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 精简版 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)
4

1 回答 1

3

Include如果未启用延迟加载,则应使用包含导航属性;

Product p = context.Products.Include("TradeMark").First();
于 2012-05-17T13:28:05.320 回答