0

私はMVCプログラミングが初めてです。クラスがある通常のOOPでは、データベースからデータを初期化してロードするだけです。MVC にはモジュールがありますが、そこからレコードをロードするにはどうすればよいですか?

タイプUserAcountの現在のコードは次のとおりです。

[Table("UserAccount")]
public class UserAccount {
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public string userName { get; set; }
    public string email { get; set; }
    public int companyID { get; set; }
}

「testUser」という名前のユーザーがいるとします。このレコードを初期化して情報を取得するにはどうすればよいですか? これを行うにはどうすればよいですか:

UserAccount user = new UserAccount("tesetUser");

これをどこでどのように使用する必要がありますか?

user = user.SingleOrDefault(u => u.userName.ToLower() == User.Identity.Name.ToLower());
4

3 に答える 3

1

Entity Frameworkを読む必要があります。これは、MVC が使用するデフォルトの ORM です。単に:

  1. プロジェクト コンテキストがまだない場合は、作成します。

    public class MyProjectContext : DbContext
    {
        public MyProjectContext()
            : base("name=ConnectionStringNameHere")
        {
        }
    }
    
  2. モデルをプロジェクト コンテキストに追加します。

    public class MyProjectContext : DbContext
    {
        ...
    
        public DbSet<SomeModel> SomeModels { get; set; }
        public DbSet<SomeOtherModel> SomeOtherModels { get; set; }
        # etc.
    }
    
  3. パッケージ マネージャー コンソール ([ツール] > [ライブラリ パッケージ マネージャー] > [パッケージ マネージャー コンソール]) を使用してデータベースを更新します。

    > update-database
    

(それを入力した後、Enter キーを押します)

次に、コントローラーでコンテキストを使用するには:

public class MyAwesomeController : Controller
{
    private MyProjectContext db = new MyProjectContext();

    public ActionResult Index()
    {
        var someModels = db.SomeModels;
        return View(someModels);
    }

    public ActionResult GetSomeModel(int id)
    {
        var someModel = db.SomeModels.Find(id);
        return View(someModel);
    }

    # other actions
}
于 2013-03-07T19:50:19.030 に答える
0

最も単純なケースでは、コントローラーでこのロジックを実行する必要があります。これにより、データがビューに渡されます。ただし、MVCは関心の分離をUIで行うことを目的としているため、理論的には、コントローラーから呼び出されるドメインレイヤーでこれを行う必要があります。

これはJeffAtwoodからのまともな記事ですが、コントローラーがアプリケーションの頭脳であることに同意しません。それはUIの頭脳の多くです...しかし、それはあなたのコードがどれほど複雑かによって異なります。ばかげて単純な場合は、ドメインレイヤーを作成しないでください

于 2013-03-07T19:04:49.557 に答える
0

MVC モデルでは、コントローラーは HTTP 要求の処理を担当します。

通常、コントローラー アクションでエンティティ (UserAccount など) を読み込みます。

エンティティを編集/更新する場合は、通常、関連するフィールドを UserAccount を反映するモデルにマップします。UI のニーズはエンティティ モデルのニーズとは多少異なることが多いため、別のモデルが提案されます。懸念事項ごとに個別のクラスを用意することで、ビューのニーズを満たすためにエンティティ モデルを汚染することを回避できます。

于 2013-03-07T19:05:16.727 に答える