ASP.NET MVC - 模型决定:如何设计呢?
-
06-07-2019 - |
题
这涉及具有非常通用的数据库的企业应用程序(所有对象都使用数据库中的数据进行标识并国际化/全球化/本地化)。
- 为存储库模式创建一个模型,然后为数据库访问创建(生成 1:1)另一个模型(LINQ2SQL 或 EF)并使用后者作为存储库模型数据访问层?
- 直接使用L2S/EF/NHibernate模型,将模型映射到DB并打开持久层?
当直接在双模型环境中使用 L2S/EF 模型时,这种双模型思想(存储库模式)弹出问题是否会使动态可堆栈 LINQ 搜索查询成为可能?
请指教。
解决方案
只要您在存储库中公开 IQueryable 对象,就可以按照您建议的方式堆叠查询。
我对此使用实体框架会持谨慎态度,因为延迟加载不受您期望的方式支持。Linq to SQL 将毫无问题地处理延迟加载。
有关实体框架中延迟加载的更多信息,请参阅:
http://www.singingeels.com/Articles/Entity_Framework_and_Lazy_Loading.aspx
其他提示
看一眼 尖锐的建筑.
关于从存储库对象返回 IQueryable,我认为这样做会模糊应用程序中适当的关注点分离。我完全支持在数据访问层中使用 IQueryable,但是一旦您开始将对象作为 IQueryable 返回,您就为控制器和/或视图提供了开始干预数据访问的机会。这甚至可能会对应用程序的可测试性产生负面影响。
不隶属于 StackOverflow