ここで質問する前にググってみましたが、解決策が見つかりませんでした。
これらの 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 プロパティは問題ありません。
}
}