ここで質問する前にググってみましたが、解決策が見つかりませんでした。
これらの 2 つのクラスと、1 対多の 1 つのマッピングがあります。
新しいオブジェクトをアタッチしようとしています
パブリック クラス MyContext : DbContext { パブリック IDbSet Operacoes { get; 設定; } public IDbSet Apontamentos { get; 設定; } } public class Operacao { 公開文字列親孝行 { get; 設定; } 公開文字列 Codigo { get; 設定; } public string Descricao { get; 設定; } } public class アポンタメント { public int ID { get; 設定; } 公開文字列親孝行 { get; 設定; } 公開文字列 OperacaoCodigo { get; 設定; } パブリック仮想 Operacao Operacao { get; 設定; } } public class OperacaoMap : EntityTypeConfiguration { public OperacaoMap() { ToTable("za6010"); HasKey(x => new { x.Filial, x.Codigo }) .Property(x => x.Codigo).HasColumnName("za6_cod"); Property(x => x.Descricao).HasColumnName("za6_desc"); } } パブリック クラス ApontamentoMap : EntityTypeConfiguration { public ApontamentoMap() { ToTable("za4010"); HasKey(x => new { x.Fialial, x.Id }); プロパティ(x => x.OperacaoCodigo) .HasColumnName("za4_oper"); /// HasRequired(x => x.Operacao) 。多くは() .HasForeignKey(x => new { x.Filial, x.OperacaoCodigo }) .WillCascadeOnDelete(false); } } public static class プログラム { static void main() { //これは機能しません。機能させる必要があります。 var context = new MyContext(); var newObj = 新しいアポンタメント { フィリアル=「01」、 OperacaoCodigo = "001" }; context.Apontamentos.Attach(newObj); var desc = newObj.Operacao.Descricao; // ここで Operacao プロパティは null です //これは機能します var newObjTmp = 新しいアポンタメント { フィリアル=「01」、 OperacaoCodigo = "001" }; var operacao = context.Operacoes.Where(x => x.Codigo == "001"); context.Apontamentos.Attach(newObj); var descTmp = newObjTmp.Operacao.Descricao; // Operacao プロパティは問題ありません。 } }