在Linq2Sql中,可以进行如下查询:
using (var db = GetDataContent())
{
var query = from p in db.Brands
where p.Deleted == false
select new BrandImageSummary
{
BrandID = p.BrandID,
BrandUrl = p.BrandUrl,
Description = p.Description,
MetaDescription = p.MetaDescription,
MetaKeywords = p.MetaKeywords,
MetaTitle = p.MetaTitle,
BrandImageUrl = (from p2 in db.SiteImages where p2.FileTypeID == 5 && p2.ForeignID == p.BrandID && p2.Deleted == false orderby p2.Rank select p2.Filename).FirstOrDefault(),
Deleted = p.Deleted,
SupplierCode = p.SupplierCode,
Title = p.Title,
Website = p.Website
};
return query.ToList();
}
使用BrandImageUrl作为嵌套选择。在实体框架中,我似乎得到了错误:
无法创建“SiteImage”类型的常量值。只有原始 在此上下文中支持类型或枚举类型。
有没有办法在实体框架中执行此操作?
查询的想法是获得一个品牌形象,如果我要加入,并且有多个图像,我会得到多行,我不想要这个。
我正在使用Entity Framework 5。
感谢您的帮助
答案 0 :(得分:1)
您应该在模型类中创建一对多关系。
然后你可以写
BrandImageUrl = p.BrandImages
.Where(i => i.FileTypeID == 5 && !i.Deleted)
.OrderBy(i => i.Rank)
.Select(i => i.FileName)
.FirstOrDefault()