6

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();
        }
    }

または、これらのメソッド(GetNameByIdGetAuthorById)をコントローラーに移動する必要がありますか?

4

2 に答える 2

8

MVCプロジェクトで、モデルにLINQクエリを配置すると、MVCパターンに反しますか?

いいえ、MVCパターンに反するものではありません。モデルでは、データベースクエリは完全に問題ありません。明らかに、ビューに渡すモデルとビューモデルを明確に区別する必要があります。ビューモデルには、データベース固有のものを含めることはできません。

または、これらのメソッド(GetNameById、GetAuthorById)をコントローラーに移動する必要がありますか?

絶対違う。コントローラの責任は、データベースにクエリを実行することではありません。コントローラの責任は、モデルと通信し、ビューモデルを構築し、このビューモデルをビューに渡すことです。コントローラーは、データベースが何であるかさえ知らないはずです。

于 2012-07-11T05:29:45.223 に答える
1

このように使用する

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();
    }
于 2012-07-13T21:38:33.817 に答える