17

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

前もって感謝します

4

1 に答える 1

34

それは、列をどうするかによって異なります。のような外部キー列がある場合、エンティティに関連付けたいエンティティAddressIdがいくつかある可能性があります。エンティティが相互にどのように関連するかを決定し、それらの間で必要なマッピングを構成する必要があります。AddressXyz

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

ここには、さまざまな関連付けタイプの説明が少し簡略化されています: Code First: Independent associations vs. Foreign key associations?

于 2013-09-15T12:22:31.870 に答える