私は MVC3 開発の学習を開始しましたが、ちょっとした障害にぶつかりました。私のプロジェクトでは、既定の aspnet_ メンバーシップ テーブルを別の SQL Server 2008 Express データベースに移動しました。次に、独自のテーブルを追加して、追加のプロファイル データを保持しました。ユーザー名 (aspnet_Users から)、電子メール アドレス (aspnet_Membership から)、名と姓 (ユーザー ID を PK としてカスタム作成されたテーブル UserDetails から aspnet_Users への FK)、およびユーザーの役割 ( aspnet_UsersInRoles および aspnet_Roles)。
これまでのところ、データベースから読み書きするために、dbcontext クラスを使用して、カスタム構築されたテーブルごとにモデルを構築しました。
public class UserDetail
{
[Key]
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Phone { get; set; }
public DateTime DateUpdated { get; set; }
}
public class UserLinkToken
{
[Key]
public Guid UserId { get; set; }
public string LinkToken { get; set; }
public DateTime DateUpdated { get; set; }
}
public class ProShotDB : DbContext
{
public DbSet<UserDetail> UserDetails { get; set; }
public DbSet<UserLinkToken> UserLinkTokens { get; set; }
}
モデルと dbcontext の名前がデータベースとテーブル名が一致せず、アプリが別のデータベースを作成することになる場合、アプリがデータベースを書き込んで更新するために、テーブルに「UserDetails」と「UserLinkTokens」という名前を付ける必要がありました。テーブルにデータを書き込みます。
aspnet_ テーブルのプロパティとカスタム テーブルのプロパティを使用してビューにオブジェクトを送信するように指示できることから、ModelView を作成する必要があります。多くのモデルビューの例を読んだ後でも、自分のアプリがどのように見えるべきかまだ明確ではありません。
データ行のリストを表示し、ユーザー ID を指定してモデルビューで参照されているそれぞれのテーブル列をすべて更新するために使用できるモデルビューの例を教えてください。
例として、すべての FirstNames (UserDetails テーブル) とそれに対応する Email (aspnet_Membership) のビューが必要だとします。
私の最終的な目標は、ユーザーに割り当てられた役割を表示するビューです。一覧表示された各ユーザーには、現在管理者ロールに属していない場合は管理者として割り当てるか、現在管理者である場合は管理者ロールを削除するコントローラーにつながるリンクがあります。
この種の質問が他の質問で以前に回答されていた場合は申し訳ありません。私はそれらのかなりの数を読みましたが、おそらく私の質問に答えるべきだったように感じますが、まったく一致するものはありませんでした. ほとんどの場合、私の混乱は、アプリがデータベースにどのように接続されているかを完全に理解していないことが原因です。私のモデルはテーブルのデータ行を表し、dbcontext はこれらのデータ行モデルのセットを取り、それをデータベース内のテーブルに接続することをある程度理解しています (dbset<(datarow/model object)> (table of datarows /モデル オブジェクトのセット))。aspnet_ テーブル/モデル オブジェクトの dbcontext クラスが表示されないため、これらのテーブルのデータがどのように取得、更新、または書き込まれるかについての適切な概念がありません。
これがどのように機能するかについての私の無知を片付けたり、必要なことを達成する方法の簡単な例を教えてくれてありがとう.