我有两个实体 - 产品和图片。这个想法是,产品只能有一张照片或没有照片,而且照片可以映射到许多产品。实体框架5.0代码第一对一和一对多关系
public class Product
{
public int Id {get; set;}
public Picture Picture { get; set; }
public bool Enabled { get; set; }
public string Text { get; set; }
}
的图片实体是一个包含所有的图片(此图片实体只包含图片为产品的映射)另一图片实体的映射,所以基本上只包含两个与IDS列。
public class Picture
{
public int Id {get; set;}
public int PictureId { get; set; }
}
这是产品实体
modelBuilder.Entity<Product>().HasOptional<Picture>(pr => pr.Picture);
我的模型绑定当我创建一个产品实体图片,或将图片添加到现有的实体Picture_Id列创建于产品表正确填充Id从Pictur e表。问题是当我尝试检索产品。 图片实体里面的产品实体为空。我怀疑映射不正确。你能告诉我如何填充图片实体当我检索它时产品实体。下面是检索代码:
public Product GetProductById(int productId)
{
var query = from pr in _productRepository.Table
where pr.Id == productId
select pr;
return query.FirstOrDefault();
}
编辑:我使用自定义的IRepository服务,包括我与依赖注入
IRepository<Product>
的IRepository接口包含以下方法:
void Insert(T entity);
void Update(T entity);
void Delete(T entity);
IQueryable<T> Table { get; }
这是表执行:
public virtual IQueryable<T> Table
{
get
{
return this.Entities;
}
}
private IDbSet<T> Entities
{
get
{
if (_entities == null)
_entities = _context.Set<T>();
return _entities;
}
}
我不能添加.INCLUDE( “图片”)到表,因为它是IQueryable的。 我也启用了延迟加载,但没有结果。
你能发布_productRepository的代码? – 2013-02-13 11:57:20
我相信你已禁用懒惰加载。看到这篇文章,它显示了加载相关数据的多种方式:http://msdn.microsoft.com/en-us/library/vstudio/bb896272(v=vs.100).aspx – 2013-02-13 11:58:49
我启用了延迟加载,但没有效果。 – 2013-02-13 12:43:04