0

我有两个如下定义的数据库类:

 public class TopDate
    {
        [Key]
        public int DateId { get; set; }
        public DateTime Date { get; set; }
    }
 public class TopSong
    {
        [Key]
        public int SongId { get; set; }        
        public string Title { get; set; }
        public int DateId { get; set; }
    }

其中 DateId 是 TopSong 的外键

我正在创建一个控制器,通过它我可以创建、删除或编辑这些数据库值。

当我右键单击控制器类并添加控制器时,我只能选择上面定义的两个类之一。有没有办法让 1 个控制器在一页上处理这两个表的数据库更新?

错误图片:在此处输入图像描述

4

2 回答 2

1

您的控制器不应直接处理域对象(即与您的数据库直接关联的那些东西)。创建一个包含您需要的属性的 ViewModel,使用您的服务层来填充 ViewModel,您的控制器将使用它作为其基础的模型。鉴于上面的描述,您的 ViewModel 的示例可能类似于以下内容:

public class MusicViewModel
{
    public int SongId {get;set;}
    public string Title {get;set;}
    public IEnumerable<DateTime> TopDates {get;set;}
}

此视图模型将包含特定歌曲为热门歌曲的所有日期的列表。

于 2012-08-29T03:31:47.617 回答
0

您显示的对象(代码)是数据库类(所谓的域对象)。您需要做的是定义一个视图模型,一个标准的 ASP MVC 实践:您定义一个类,该类是为特定视图量身定制的,并且只包含与该特定视图相关的数据。因此,您将拥有一个视图模型,该视图将创建一首歌曲,另一个将更新它等。

实际上,您描述的情况是使用视图模型的经典情况。然而,在视图中使用域对象确实是一种非常糟糕的做法,并且容易出现比您想要处理的更多的问题。

希望这可以帮助。

于 2012-08-29T05:03:53.137 回答