1

1対多の関係を持つ2つのクラスがあります。

public partial class Client
{
    public Client()
    {
        this.Client_Local = new HashSet<Client_Local>();
    }

    public System.Guid Guid { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Client_Local> Client_Local { get; set; }
}

public partial class Client_Local
{
    public System.Guid LocalGuid { get; set; }
    public System.Guid Guid { get; set; }
    public string CultureID { get; set; }
    public string LocalName { get; set; }

    public virtual Client Client { get; set; }
}

マッピング クラスは次のとおりです。

class ClientMapping : EntityTypeConfiguration<Client>
{
    public ClientMapping()
    {
        this.HasKey(entity => entity.Guid); //As newsequentialid()
        this.ToTable("Client");

        this.Property(entity => entity.Guid).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    }
}

class Client_LocalMapping : EntityTypeConfiguration<Client_Local>
{
    public Client_LocalMapping()
    {
        this.HasKey(entity => entity.LocalGuid); // as As newsequentialid()
        this.ToTable("Client_Local");

        this.Property(entity => entity.LocalGuid).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        this.HasRequired<Client>(e => e.Client).WithMany(p => p.Client_Locals).HasForeignKey<Guid>(c => c.Guid);
    }
}

クライアント クラスの新しいインスタンスを作成し、それらをデータベースに正常に保存できます。しかし、Client_Local クラスを追加してデータベースに保存しようとすると、「ReferentialConstraint の依存プロパティがストアで生成された列にマップされています。列: 'Guid'.」というメッセージが表示されます。

キー フィールドは、パフォーマンス上の理由から、SQL で newsequentialid として生成されます。また、Client_Local.Guid と Client.Guid の間には外部キーの関係があります。

データベースからのデータの取得は、上記のマッピング クラスで機能します。どんな助けでも大歓迎です。

4

0 に答える 0