タグ付けされた質問 「asp.net-mvc」

ASP.NET MVCフレームワークは、モデルビューコントローラー(MVC)パターンを実装するMicrosoft Webアプリケーションフレームワークです。

1
遅延コレクションが不要になったときに、データベースコンテキストが適切に破棄されることをどのように保証しますか?
ここでベストプラクティスの種類の答えを探しています。 実装するクラスと対話するためのベストプラクティスIDisposableは次のUsingステートメントによるものであることを考えると、MVCでEFレイジーロードを使用するためのベストプラクティスは何ですか? コントローラーメソッドの例: <HttpGet> Public Function Schedule(ByVal id As Int64) As ActionResult Dim model As Schedule = Nothing Using database As dataContext = New dataContext model = (From s In database.Schedules Where s.ScheduleID = id Select s).FirstOrDefault End Using Return View(theSchedule) End Function この例では、モデルがビューに到着するまでにデータベース[dataContext]が破棄されるため、遅延読み込みが機能しなくなります。 だから私は質問だと思います: MVCで遅延読み込みを使用するためのベストプラクティスは何ですか?データベースコンテキストが適切に破棄され、メモリリークが発生しないことをどのように保証しますか?

5
MySQLをデータベースとして使用してASP.NET MVCアプリケーションを開発できますか?
データベースとしてMSSQLを使用しているASP.NET Webサイトを見てきました。少し前に開発しました。MySQLの場合、MSSQLだけが無料の代替手段として利用できるのはなぜですか。それで、問題は、MSSQLをASP.NETアプリケーションと同じくらい簡単にMySQLデータベースに統合することは可能ですか、そうするためにいくつかのAPIを使用する必要がありますか?

1
ビジネスルールがMVCでの表示に影響する場合
MVC設計パターンは、ビジネスルールをプレゼンテーションから分離することにつながります。 ただし、ビジネスルールがプレゼンテーションに影響を与えることがあります。これに対処する最良の方法は何ですか?ViewModelを使用する必要があるのはそのときですか? たとえば、存在しないライブラリアプリケーションに戻って、図書館員が返却された本をスキャンしています。システムは、本が遅れていることを示し、その常連客に罰金を課します。 特定の従業員は、特定の条件に基づいて罰金を無効にするセキュリティを持っている場合があります。 ライブラリアプリケーションのプレゼンテーションレイヤーでは、従業員が罰金を0に設定するか、ボタンをクリックして罰金を上書きする必要があります。 しかし、これを行うためのセキュリティがない従業員は、料金を無効な入力またはおそらく読み取り専用として見る必要があります。 セキュリティだけがビジネスルールではない場合があることに注意してください。これは単なる例です。たとえば、アプリケーションのどこかに設定情報が設定されていて、画面のフィールドが不要になるなどです。 このコードでは、誰でも罰金を変更してから検証メッセージを表示することができますが、それは良いユーザーエクスペリエンスではありません。 これを達成するための良い習慣は何ですか?(ASP.NET MVCを使用して)考えられるオプションは次のとおりです。 ビュー自体にビジネスルールをチェックさせ、フィールドを無効または有効にします。 ファインフィールドのプレゼンテーションを実装するHTMLHelper関数を使用し、そのヘルパー関数にビジネスルールをチェックさせます。 コントローラーにビジネスルールを確認させ、別のビューを使用してもらいます。 コントローラーにビジネスルールをチェックさせ、フィールドが有効かどうかを示すプロパティをViewBagに設定します。 ViewModelを使用して、ビジネスルールをチェックし、フィールドが有効であることを示す情報を設定します。 オプション1と2では、プレゼンテーションレイヤーでビジネスルールの検証を行わなければならず、混乱を招きます。 オプション3では、2つのビューが定義されているため、作業が重複します。 オプション4および5では、プレゼンテーションレイヤーがフィールドが有効または無効になっていることを認識している必要がありますが、理由は認識できません。私は4または5が一番好きだと思います。 私が考えていない他のオプションはありますか?

1
ASP.NET MVC-MVCのM、V、Cはドメインエンティティを明示的に認識する必要がありますか?
この質問はかなり主観的なようですので、ここに投稿します。 あなたはASP.NET MVCを使用してStackOverflowの独自のバージョンを書いているとしましょう、そうのようなクラスがありQuestion、Answer、User、などあなたがしている怠惰な、あなたはエンティティフレームワークを使用することにしましたのでは。したがって、上記のすべてのクラスにはナビゲーションプロパティがあります。QuestionそのAnswersをAnswer知っている、User投稿者を知っているなどです。 Martin Fowlerの本をたくさん読んだことがあるので、すべてのビジネスロジックを実装するためのサービスレイヤーが必ずあるはずです。ASP.NET MVCは、UIおよびアプリケーションロジック関連の機能にのみ使用します。 2つの質問があります。 あなたは直接のオブジェクト公開しますQuestion、Answerコントローラーにして他の人を? ビューに対しても同じことをしますか? 私は基本的に自分のアプリケーションにREST APIを提供するつもりもありませんし、「ちょっと、MY VIEWはそれが何であるQuestionかを知っているので、それが悪いかどうかわかりません。気に入らない!」 Questionクラスに次のようなフィールドがTimePostedあり、PostNewQuestionビューをそのクラスにバインドする場合に特に興味があります。そのフィールドをページ上のどのコントロールにもバインドしない場合は、投稿されないのでnull、コントローラー側でオブジェクトを取得したときにそのフィールドを設定します。それは大丈夫ですか、それとも悪い考えですか?私が考えている2つの反対のアプローチは、「どこでもDTO / ViewModelを使用すること」と「wtf、クラスが少ないほど常に良いことです!」です。 正しいアプローチは何だと思いますか?(私は直接的な答えがないことを知っているので、問題は「DTO / ViewModels /その他のアプリのアーキテクチャに適しているかどうかを判断するために何を検討すべきか」です。) また、Stackoverflowの非常に簡略化されたクローンを検討していることにも注意してください。 これはWebのみのプロジェクトです(REST APIなどは公開しません)。 ユーザー、質問、回答、タグ、検索機能があります(優れたビジネスロジックはありません) 1日あたり100人ほどのアクティブユーザーがいます(特別なパフォーマンス要件はありません) 新しいメンバーが開発チームに加わった場合でも、コードは読みやすく、驚きや特別な関心のある場所があってはなりません。 最初の3つのポイントが変更された場合の考えを表明することもできます-「顧客は、10000人の同時ユーザーを許可するために私たちのサービスを望んでいる」または「すべてのユーザーが15分に1回だけ投稿できるようにする必要がある」など。 ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.