在MVC模型数据库查询(Database Queries in MVC Model)

2019-07-30 08:31发布

在如果我把LINQ查询在MVC项目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();
        }
    }

或者我应该将这些方法( GetNameByIdGetAuthorById )来控制?

Answer 1:

在如果我把LINQ查询在模型中MVC项目,是对MVC模式?

不,这不是对MVC模式。 数据库查询在模型完美的罚款。 显然,应明确区分型号和要传递给你的意见视图模型之间进行。 视图模型不应该包含任何数据库具体的东西。

或者我应该将这些方法(GetNameById,GetAuthorById)来控制?

绝对不。 该控制器的责任不是查询数据库。 控制器的责任是交谈的模型,建立一个视图模型,并通过该视图模型的视图。 控制器甚至不应该知道数据库是什么。



Answer 2:

使用这样

internal IQueryable<Table1> GetArmyList2()
    {
        //var lists = from list in db.Table1
                 //   select list;

        //return lists;


        var query = from Table1 in db.Table1
                    where Table1.Username.Equals("asik") & Table1.Password.Equals("asik")
                    select Table1;

        return query;


    }

和控制器代码

public ActionResult asik()
    {
        var armyList = cl.GetArmyList2();
        return View(armyList);
        // return View();
    }


文章来源: Database Queries in MVC Model