Wah*_*tar 9 asp.net-mvc orm entity-framework poco repository-pattern
阅读答案后,请在问题末尾阅读我的更新:
我正在尝试将存储库模式应用于Rob Conery在 他的博客 " MVC Storefront " 下所描述的.但是我想问一下在应用这个设计模式之前我遇到的一些问题.
Rob制作了自己的"模型"并使用了一些ORM"LINQ to SQL或Entity Framework(EF)"将他的数据库映射到实体.
然后,他使用自定义存储库,
IQueryable<myModel>
在这些存储库中,他在ORM 和他的类之间进行了一种 映射或"解析" .Entities
Model
我在这里问的是:
是否可以在ORM
Entities
和我的模型"classes
" 之间进行自定义映射,并加载我想要的属性?我希望这一点很清楚.
更新POCO
**
**
毕竟,就Rob Conery先生的观点而言,我有更好的解决方案:
POCO
s"并将它们放入我的"模型层"中,因此它们与"edmx"文件无关.POCO
依赖于" DbContext
"的这个" "模型ViewModels
"来获取这些存储库中视图所需的信息.所以,我并不需要添加更多的层是"EF模型"和"我的模式"之间.我只是扭曲了我的模型并强制EF处理它.
我认为这种模式比Rob Conery更好.
小智 19
是的,如果您正在使用LINQ to SQL,那么这是可能的.您需要做的就是使用投影将您想要的数据提取到您选择的对象中.你不需要所有这些带有接口和诸如此类的装饰 - 如果你使用特定于视图的模型(它听起来你需要) - 创建一个ViewModel类.
我们称之为ProductSummaryView:
public class ProductSummaryView{
public string Name {get;set;}
public decimal Price {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在从存储库加载它:
var products= from p in _repository.GetAllProducts
where p.Price > 100
select new ProductSummaryView {
Name=p.ProductName,
Price=p.Price
}
Run Code Online (Sandbox Code Playgroud)
这将拉出价格> 100的所有产品并返回IQueryable.此外,由于您只需要两列,因此在SQL调用中只会指定两列.
归档时间: |
|
查看次数: |
2170 次 |
最近记录: |