Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NETMVC2-模型与存储库的耦合_Asp.net Mvc_Interface_Model_Entity - Fatal编程技术网

Asp.net mvc ASP.NETMVC2-模型与存储库的耦合

Asp.net mvc ASP.NETMVC2-模型与存储库的耦合,asp.net-mvc,interface,model,entity,Asp.net Mvc,Interface,Model,Entity,关于问题,假设我们有以下场景- 实现IUser [MetadataType(typeof(IUser))] public class User : IUser 以及一个存储库,用于从我们想要使用的任何数据存储中保存、检索这些数据 public class UserRepository : IRepository<User> IQueryable<User> GetAUserBySomeCriteriaOrOther(int aParam, string anotherP

关于问题,假设我们有以下场景-

实现
IUser

[MetadataType(typeof(IUser))]
public class User : IUser
以及一个存储库,用于从我们想要使用的任何数据存储中保存、检索这些数据

public class UserRepository : IRepository<User>
IQueryable<User> GetAUserBySomeCriteriaOrOther(int aParam, string anotherParam);
公共类用户存储库:IRepository
可读取的GetAUserBySomeCriteriaOrOther(在aParam中,字符串另一个参数);
更进一步,我们将在顶部有一个控制器,也许还有一个视图,每个视图都需要一个
IQueryable
的实例

因此,我的问题是: 与
IQueryable
相比,将结果作为
IQueryable
从存储库传回有哪些优点/缺点


我问这个问题的原因是,我看到的大多数示例/演示都会使用
IQueryable
,但在我看来,这似乎是在更高层和生成
用户
类的任何方法之间引入了耦合。假设我想从Linq改为Sql,再改为实体框架——这不是一个大问题吗?

EntityFramework不支持通过接口进行查询。Linq2Sql可以解决这个问题


通常,在所有.NET ORM之间,您的用户类看起来都是相同的。当您切换ORM时,您的linq和模型类可能不会改变。

很抱歉稍微重复一下这一点,但要明确:在本例中,我将有一个类用户,它将从我使用的任何存储库/ORM中传递回来?因此,我可以从Linq2SQL开始,用一个月的时间,然后决定实际上让我们改为NHibernate,只要NHibernate存储库返回相同的用户类,上面的层就可以很好地进行下去了?很有可能。用户的形状/定义不会改变,因此所有调用代码都不会在意。我有一个演示/scratchpad项目,我经常切换到ORM,它非常容易做到。