1

私はASP.NETMVC(および一般的には.NET)を初めて使用します。いくつかのCRUD機能を備えた基本的なWebサイトをまとめようとしていますが、EFとSimpleMembershipに少しつまずきました。優れたスターター情報を探すのに何時間も費やしましたが、MVC 4は新しすぎて、成熟したコンテンツを作成できないようです(理解できます)。

今質問のために!

ジョブやアプリケーションなど、いくつかのモデルを追加する場合は、それらをすべて1つのモノリシックファイルにまとめるか、各モデルを独自のファイルに分割する必要がありますか?

DBコンテキストはいくつ必要ですか?このようになりますか?

public class MyContext : DbContext
{
    public DbSet<Job> Jobs { get; set; }
    public DbSet<Application> Applications { get; set; }
}

(SimpleMembershipからの)UsersContextは、モデル用に作成したコンテキストから分離したままにする必要がありますか?

ジョブからユーザー(ポスターやテイカーなど)への複数の「ナビゲーションプロパティ」(正しい使用法?)が必要な場合、このようにしますか?

public class Job
{
    public int JobId { get; set; }

    public virtual User Poster { get; set; }
    public virtual User Taker { get; set; }
}

前の質問に関連して、SimpleMembershipを使用していて、モデルとUsersContextのコンテキストを分離している場合(間違っている場合は修正する必要があると思います)、コンテキストの境界を越えて参照を作成するにはどうすればよいですか?

これらの質問に答えることは、私が地面から降りるのに本当に役立ちます!ありがとう!

4

1 に答える 1

1

各クラスには、クラスの名前と一致する名前の独自のcsファイルが必要です。

Job.cs

Application.cs

MyContext.cs

データベースごとに1つのDbContextが必要です。したがって、これらすべてのテーブルを同じデータベースに配置する場合は、1つのDbContextが必要です。

コンテキスト間でのAFAIKの参照はサポートされません。int外部キープロパティを追加し、属性[NotMapped]を使用して参照を作成し、各データベースから2つのエンティティを個別に取得するときにそれらを手動で割り当てることができます。つまり if(someJob.PosterKey == someUser.UserKey) { someJob.Poster = someUser }。しかし、少し苦痛になります。

編集:私がおそらく最初にすることは、AccountsModelファイルからUsersContextクラスを取り出して、それを独自のファイルにすることです。通常、コンテキストにはアプリにちなんで名前を付けます。したがって、アプリがJobs Managerと呼ばれる場合は、コンテキストJobsManagerContextを呼び出して、それをJobsManagerContext.csファイルに配置します(接続文字列を変更して、db JobsManagerに名前を付けます)。すべてのアカウントモデルクラスは、すべて一緒に生成されるという意味で、最初のファイルのままにしておくことができます。ただし、新しいモデルクラスごとに新しいファイルを作成します。

于 2012-11-15T04:46:15.757 に答える