没有DbContext的ASP.Net模型?

时间:2013-11-26 16:27:57

标签: asp.net asp.net-mvc

我是ASP.Net的新手,如果我的问题听起来很基本,请礼貌。

我创建了一个ASP.Net MVC4项目。应用程序中的页面将以表格形式显示文件的名称。

通过查找服务器上特定文件夹中的文件来获取文件的名称。所以我没有必要为模型建立数据库。

当用户打开页面时,服务器端代码将列出目录中的所有文件,并应返回字符串列表。

我关注ASP.Net MVC tutorial here,看来我必须拥有一个DBContext类和一个数据库。在我的情况下,不需要

所以这个问题是我可以添加我的模型而不必像下面那样添加代码并且仍然可以使用模型的功能吗?任何简单的例子都会很棒。

 public class MovieDBContext : DbContext 
 {
  public DbSet<Movie> Movies { get; set; } 
 }

4 个答案:

答案 0 :(得分:3)

在这种情况下,任何类都可以作为模型。例如,如果您只想拥有Movie模型,则可以使用以下简单的方法:

public class Movie
{
    public string Title { get; set; }
}

视图可以绑定到该模型,该模型的枚举等等。

要从文件系统中获取数据,一种方法可能是该模型上的简单工厂方法。也许是这样的:

public class Movie
{
    public string Title { get; set; }

    public static IEnumerable<Movie> GetMovies()
    {
        // get the list of movies from the file system, for example as a list of strings
        var movies = SomeFileSystemInteraction();
        return movies.Select(m => new Movie { Title = m });
    }
}

然后在您的控制器中,您可以获取要绑定到视图的电影列表:

public ActionResult Index()
{
    return View(Movie.GetMovies());
}

不需要数据库,它只是在教程中使用,因为它是最常见的情况。但是你可以将你的视图绑定到你想要的任何对象上。

答案 1 :(得分:1)

如果您不处理数据库,不需要 MovieDBContext类。但是拥有一个模型是一个好主意,代表你的实体(在这种情况下是文件夹)。这只是一个POCO课程。

public class Folder
{
  public string Name { set;get;}
  public int NumberOfchilds { set;get;}
  //Other properties as needed.
}

现在,您可以使用Model类在不同位置之间传递数据。例如。您可以将从文件系统读取数据的代码移动到Service类方法,并且该方法可以根据需要返回此类的列表/此类的单个实例。您的控制器操作方法可以调用服务方法。

public class FolderService
{
  public Folder GetRecentlyCreatedFolder()
  { 
     var folder=new Folder();
     //Set the properties of this object
     // folder.Name="MySecret";
     return folder; 
  }
}

并在你的Action方法中

public ActionResult Items()
{
  var srv=new FolderService();
  var recentFolder=srv.GetRecentlyCreatedFolder();
  return View(recentFolder);
}

答案 2 :(得分:0)

是的,您可以使用根本没有存储在数据库中的模型。你的案子听起来就是一个明显的例子。

模型,视图,控制器使数据库访问变得容易抽象,但不需要数据库。

答案 3 :(得分:0)

尽管我喜欢实体框架,但我从未喜欢过MVC的大多数教程似乎都将两者结合起来 - 它们本质上是无关的,我认为对于许多刚接触框架的程序员来说,这真的很混乱。

模型所需要的只是一个普通的老课程。您只需使用加载数据所需的任何代码,而不是使用dbcontext。