0

最初に Entity Framework 4.3.1 コードを使用しています。データベースには、列名がリストされた 2 つのテーブルがあります。

ステータス表:

StatusID int
Status varchar(50)

RequestStatuses テーブル:

RequestStatusID int
RequestStatus varchar(50)

私は2つのクラスを持っています:

public class Status : IEntity
{
     public int Id { get; set; }
     public string Name { get; set; }

     public RequestStatus RequestStatus { get; set; }
}

public class RequestStatus : IEntity
{
     public int Id { get; set; }
     public string Name { get; set; }

     public Status Status { get; set; }
}

私のデータベースコンテキストクラス:

public class ICaseDbContext : DbContext
{
     public DbSet<Status> Statuses { get; set; }
     public DbSet<RequestStatus> RequestStatuses { get; set; }

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
          modelBuilder.Configurations.Add(new StatusConfiguration());
          modelBuilder.Configurations.Add(new RequestStatusConfiguration());
     }
}

それらの構成:

class StatusConfiguration : EntityTypeConfiguration<Status>
{
     internal StatusConfiguration()
     {
          this.ToTable("Statuses");
          this.Property(x => x.Id).HasColumnName("StatusID");
          this.Property(x => x.Name).HasColumnName("Status");
     }
}

class RequestStatusConfiguration : EntityTypeConfiguration<RequestStatus>
{
     internal RequestStatusConfiguration()
     {
          this.ToTable("RequestStatuses");
          this.Property(x => x.Id).HasColumnName("RequestStatusID");
          this.Property(x => x.Name).HasColumnName("RequestStatus");
     }
 }

各テーブルのデータは次のようになります。

RequestStatuses テーブル:

RequestStatusID     RequestStatus
1                   RequestStatus1
2                   RequestStatus2
3                   RequestStatus3
4                   RequestStatus4

ステータス表:

StatusID            Status
1                   Status1
2                   Status2
3                   Status3
4                   Status4

各テーブルの主キーは、他のテーブルの主キーと一致します。したがって、RequestStatus1 のリクエスト ステータスがある場合、対応するステータスは Status1 である必要があります。Status3 のステータスがある場合、対応するリクエスト ステータスは RequestStatus3 である必要があります。

これは可能ですか?

EFでこれを設定するにはどうすればよいですか

4

1 に答える 1

0

1:1 のマッピングが必要だと思うので、ID をキーとして使用して両端が必要です。

このように構成を更新すると、必要なテーブルが作成されます。

class StatusConfiguration : EntityTypeConfiguration<Status>
{
    internal StatusConfiguration()
    {
        this.ToTable("Statuses");
        this.Property(x => x.Id).HasColumnName("StatusID");
        this.Property(x => x.Name).HasColumnName("Status");

        this.HasRequired(x => x.RequestStatus)
            .WithRequiredPrincipal();

    }
}

class RequestStatusConfiguration : EntityTypeConfiguration<RequestStatus>
{
    internal RequestStatusConfiguration()
    {
        this.ToTable("RequestStatuses");
        this.Property(x => x.Id).HasColumnName("RequestStatusID");
        this.Property(x => x.Name).HasColumnName("RequestStatus");

        this.HasRequired(x => x.Status)
           .WithRequiredDependent();
    }
}
于 2012-09-06T12:50:57.283 に答える