我是Linq的新手。我一直在使用强类型数据集,但喜欢 Linq 创建对象的想法。
目前,我使用数据集来检索连接来自 tblProducts 和 tblProductSettings 的数据的表。
这是一对多的关系,因为产品服务于多个网站,每个网站都有一个唯一的 tblSettings 行,但是它假设每个网站总是有一行 tblSettings。
例子 :
Select * from tblproducts, tblProductSettings where tblproducts.ProdID = tblProductSettings.ProdID and tblProductSettings.CreatorID = @CreatorID
数据集将提供一个很好的表格来循环并显示带有设置的产品。
Linq 会给我一个带有 tblProductSettings 作为集合的 tblProducts 对象。我不想每次都循环一个集合来获取设置,我相信为每个产品创建一个新的 sql 查询并使访问设置变得痛苦。
我可以创建一个自定义对象 tblProductsAll,但我可以填充这个对象的唯一方法是......
var Product = from p in context.tblProducts
join ps in context.tblProductSettings on p.ProdID equals ps.ProdID
where p.CreatorID == 1 && ps.ProdCreatorDisplay == 1
select new tblProductsAll()
{
ProdTitle = p.ProdTitle,
ProdPrice = ps.ProdPrice
};
然后我可以将此模型传递给剃刀模板。
我的问题是......有没有更好的方法来设置属性?有 20 个或更多不同的属性,我不想每次都在站点中使用具有不同 where 子句的相同对象时不断设置它们,重复代码。有没有办法阻止这种重复?即自动映射对象,或重用select new 语句。
任何帮助将非常感激。