Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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
C# 在3tier应用程序中传输分页数据_C#_Asp.net Mvc_3 Tier - Fatal编程技术网

C# 在3tier应用程序中传输分页数据

C# 在3tier应用程序中传输分页数据,c#,asp.net-mvc,3-tier,C#,Asp.net Mvc,3 Tier,我不确定是否存在这样的问题。但是我没有找到它 因此,基本上我拥有的是一个三层web应用程序(MVC),其中有几个定义BLL和DAL的程序集。 对于定义的每个Db实体,我创建了要通过BL层的数据传输对象,但在某些情况下,我需要以DataParty类中的部分形式返回数据(定义了有限的列表,并且查询检测到了所有数据的数量)。 数据部分接口 public interface IDataPortion<TItem> where TItem : class { IEnumerable&l

我不确定是否存在这样的问题。但是我没有找到它 因此,基本上我拥有的是一个三层web应用程序(MVC),其中有几个定义BLL和DAL的程序集。 对于定义的每个Db实体,我创建了要通过BL层的数据传输对象,但在某些情况下,我需要以DataParty类中的部分形式返回数据(定义了有限的列表,并且查询检测到了所有数据的数量)。 数据部分接口

public interface IDataPortion<TItem> where TItem : class
{
    IEnumerable<TItem> Items { get; }
    int TotalCount { get; }
}
公共接口IDataPortion,其中TItem:class
{
IEnumerable项{get;}
int TotalCount{get;}
}
这里是以这种方式返回数据的存储库方法签名的示例

IDataPortion<TEntity> Get(int page, int pageSize);
IDataPortion<TEntity> GetByAuthor(string uid, int page, int pageSize);
IDataPortion-Get(int-page,int-pageSize);
IDataPortion GetByAuthor(字符串uid、int-page、int-pageSize);
因此,它将数据部分类型返回到BL层。在将数据返回到表示层之前,所有实体都映射到DTO对象。但我应该如何处理此数据部分?我不能绕过BL程序集直接从表示l-r引用DAL

所以我的问题是:我应该为DataPart创建某种类型的DTO吗

PagedResult<TItem>
{
    IEnumareble<TItem> Items { get; }
    int TotalCount { get; }
}
PagedResult
{
IEnumerable项{get;}
int TotalCount{get;}
}
然后将其映射到IDataPortion实现?
或者我应该避免从DAL传输此类数据,并分别返回totalCount和项目列表?通过使用DataParty,我试图避免创建方法或属性,如“FoundedByAuthor和CreationDateCount”在我的存储库中。

您不应该将数据层组件(如模型)直接公开给表示层。为了将数据传输到表示层,您可以使用DTO、viewmodels等。在您的情况下,您可以创建另一个名为“横切”的项目包含辅助对象、视图模型、通用对象、DTO等。所有其他项目都可以引用“横切”。您可以将IDataPortion接口和DataPartion类移动到那里,以便所有其他项目都可以访问它们。数据层中的模型类和其他项目中的viewmodels都可以使用此接口