Entity Framework 4.3.1を使用してC#でプロジェクトを作成するのはこれが初めてです。トーナメントテーブル、正確にはアドレスからすべてのデータを取得するのに問題があります。
まず、これが私のコードファーストコードです。これを実行すると、2つのテーブルが正しい関係で正しく作成されます。これらのクラスにはさらに多くの列が定義されていますが、この例ではいくつかしか示していません。
public class EFDbContext : DbContext
{
public EFDbContext()
: base("ApplicationServices")
{
}
public DbSet<Tournament> tournaments { get; set; }
public DbSet<Address> addresses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public class Tournament
{
[ScaffoldColumn(false)]
public int TournamentId { get; set; }
[Required(ErrorMessage="Tournament name is a required field")]
public string Name { get; set; }
[Required(ErrorMessage="Address is a required field")]
public Address Address { get; set; }
}
public class Address
{
[ScaffoldColumn(false)]
public int AddressId { get; set; }
[Required(ErrorMessage="Street name is a required field")]
public string Street { get; set; }
[Required(ErrorMessage="House number is a required field")]
public string HouseNo { get; set; }
}
}
アドレスを指定して新しいトーナメントを挿入し、データベースをチェックして、リレーションが使用されているかどうかを確認すると、それが機能していることがわかります。トーナメントには、新しく挿入されたアドレスを指すAddress_AddressId値があります。しかし、私がこれを行うことによって情報を取得しようとすると:
Tournament tournament = context.tournaments.Find(id);
デバッグすると、アドレスを除いて、トーナメントからのすべてのデータがトーナメントオブジェクトにあることがわかります。これはnullに設定されており、理由はまったくわかりません。
助けてくれませんか?
よろしくお願いします、バート