在MVC项目中,如果我放入LINQ查询Model,它是否违反MVC模式?
namespace DocLibrary.Models
{
public class Author
{
private DocLibraryContext db = new DocLibraryContext();
[Key]
public Int32 AuthorId { get; set; }
[StringLength(20)]
public String Name { get; set; }
..
public string GetNameById(int AuthorId)
{
var query = from a in db.Author
where a.AuthorId == AuthorId
select a.Name;
return query.FirstOrDefault();
}
public Author GetAuthorById(int AuthorId)
{
var query = from a in db.Author
where a.AuthorId.Equals(AuthorId)
select a;
return query.FirstOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
或者我应该将这些方法(GetNameById,GetAuthorById)移动到Controller?
在MVC项目中,如果我在模型中放置LINQ查询,它是否违反MVC模式?
不,这不符合MVC模式.数据库查询在模型中完全没问题.显然,您要传递给视图的模型和视图模型之间应该有明显的区别.视图模型不应包含任何特定于数据库的内容.
或者我应该将这些方法(GetNameById,GetAuthorById)移动到Controller?
绝对不.控制器的职责不是查询数据库.控制器的职责是与模型通信,构建视图模型并将此视图模型传递给视图.控制器甚至不应该知道数据库是什么.
| 归档时间: |
|
| 查看次数: |
16418 次 |
| 最近记录: |