web-dev-qa-db-ja.com

EntityTypeConfigurationクラスで外部キーを設定する方法

EntityTypeConfigurationクラスの作成を開始し、次のことを行いました

public class Xyz
{
   public int PlaceId { get; set; }

    public string  Name { get; set; }

    public DbGeography Location { get; set; }

    public int HumanTypeId { get; set; }

    public int AddressId { get; set; }
}

およびEntityTypeConfigurationクラス

 public sealed class XyzConfiguration:EntityTypeConfiguration<Xyz>
{
    public XyzConfiguration()
    {
        ToTable("Place", "dbo");
        HasKey(p => p.PlaceId);   
        Property(p => p.PlaceId)
            .HasColumnName("PlaceId")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        Property(p => p.Name);
        Property(p => p.Location). ;
        Property(p => p.HumanTypeId);
        Property(p => p.AddressId);
    }
}

DbGeographyおよび外部キー列HumanTypeId , AddressIdを設定する方法を教えてください。

前もって感謝します

16
Ancient

カラムをどうするかによって異なります。 AddressIdのような外部キー列がある場合、Addressエンティティに関連付けたいXyzエンティティがおそらくあります。エンティティの相互関係を決定し、エンティティ間のマッピングを構成する必要があります。

AddressクラスまたはXyzクラスのいずれかにナビゲーションプロパティが必要です。そうでない場合、外部キーをバインドするものは何もありません。外部ID列は次のように扱われます。通常の列(必要な場合は問題ありません)。

したがって、Xyzエンティティにナビゲーションプロパティを追加する場合

public class Xyz
{
    // Your code
    public int AddressId { get; set; }
    public virtual Address MyAddress { get; set; }
}

// Your Address class
public class Address
{
    public int ID;
}

これらの線に沿って何かを行うことでマッピングを構成できます(関係によって異なります:

public sealed class XyzConfiguration : EntityTypeConfiguration<Xyz>
{
    public XyzConfiguration()
    {
        // Your code.

        this.HasOptional(x => x.MyAddress)      // Your Xyz has an optional Address
            .WithMany()                         // Address may be owned by many Xyz objects
            .HasForeignKey(x => x.AddressId);   // Use this foreign key.
    }
}

私は空間タイプとEFの使用を試していませんが、ここから始めます: http://msdn.Microsoft.com/en-us/data/hh859721.aspx

EFページの使用開始にマッピング構成に関する豊富な情報があります: http://msdn.Microsoft.com/en-us/data/ee712907 「Fluent API-プロパティとタイプの構成/マッピング」を試す

ここでは、さまざまな関連付けの種類について少し要約した説明もあります: コードの最初:独立した関連付けと外部キーの関連付けですか?

33
Chris