【发布时间】:2014-05-12 17:37:31
【问题描述】:
服务层应该只返回模型对象吗?网上有一些关于它的帖子(here 和 here 是一些 SO 帖子),但没有一个很好的例子。
我看到的都是这样的:
服务应该只关心问题域,而不是视图 呈现结果。返回值应该用域来表示 对象,而不是视图。
我觉得我在这里遗漏了一些东西。
看下面的例子......假设我想返回所有电影的列表,但是,我需要一个 boolean 标志 - 类似于 hasLike - 以显示我之前是否已经喜欢它。怎么可能只从服务层返回模型?
简而言之......我如何按照这种方法从服务层返回meta information?这可能吗?
型号
public class Person
{
public int PersonID { get; set; }
public string Name { get; set; }
public ICollection<Movie> FavoriteMovies { get; set; }
public ICollection<MovieLikes> Likes { get; set; }
}
public class Movie
{
public int MovieID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class MovieLike
{
public int MovieLikeID { get; set; }
public int PersonID { get; set; }
public int MovieID { get; set; }
public DateTimeOffset Date { get; set; }
}
服务
public class MovieService : IMovieService
{
public Movie Get(int id)
{
}
public Movie GetByName(string name)
{
}
public IEnumerable<Movie> GetAll()
{
return unit.DbSet<Movie>();
}
}
【问题讨论】:
-
嗯……但如果我这样做,我会把不必要的数据传递给控制器,对吧?
-
这是您问题的可能答案:stackoverflow.com/questions/21554977/…
标签: c# asp.net-mvc viewmodel service-layer