EF はビューではうまく機能しません。コードを手渡すストレートな ADO.NET 永続化レイヤーを使用する方が良い場合もあれば、Linq2Sql の方がビューを使用する方が少し優れている場合もあります (ただし、手動で接続する必要があります)。nHibernate はおそらく使用するのに最適な ORM でしょう。
編集:
@ user1469655 - MVC の仕組みについて非常に根本的な誤解があります。「ビュー」はページではありません。テンプレートです。あなたが考える「ページ」(つまり、特定の URL へのアクセス) は、実際にはルートとアクションという 2 つの異なるものを組み合わせたものです。アクションによって特定のテンプレート (ビュー) がレンダリングされる可能性がありますが、アクションとビューの間に必ずしも 1:1 の相関関係があるとは限りません。
「アクション」はコントローラのメソッドです。これは、ルートによって URL にマップされます。通常 (必ずというわけではありませんが)、これは次のようなことを意味します。
http://www.my.site/controller/action
ユーザーがこの URL にアクセスすると、アクション メソッドが呼び出され、ビューがレンダリングされる可能性があります。これは、任意のアクション メソッドによって自由にレンダリングできる html テンプレートにすぎないため、異なるアクションで同じビューをレンダリングできます。
したがって、何をしたいかは、実際に何をログに記録しているかによって異なります。ビューへのアクセスをログに記録しても意味がありません。実際には何の意味もないからです。あなたがしたいことは、アクションを介してアクセスをログに記録するか、場合によってはルートを介してログを記録することです。
これを行う最も簡単な方法は、すべてのアクションの前に呼び出されるグローバル アクション フィルターを使用することです。そのフィルターでは、必要な情報 (ユーザー ID、日付、時刻、アクション、リファラーなど) をログに記録できます。あらゆる行動を呼びかけました。ただし、無視されたルート (javascript、画像、css、直接ダウンロードされたファイルなどのコンテンツなど) に対しては呼び出されません。それらをログに記録する必要がある場合は、アクションを介してそれらへのアクセスを制御する必要があります。
ここにアクションフィルターに関する優れたチュートリアルがあります
http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs