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 の間には外部キーの関係があります。
データベースからのデータの取得は、上記のマッピング クラスで機能します。どんな助けでも大歓迎です。