3
私はここで質問する前にgoogleを試みましたが、解決策を見つけることができませんでした。オブジェクトが添付された後にプロパティを読み込む
私はこれらの2つのクラスを持っているし、あなたの実体ではないので、単一のマッピング、一対多
- 私は、新しいオブジェクトあなたの最初のケースは動作しません
public class MyContext : DbContext { public IDbSet Operacoes { get; set; } public IDbSet Apontamentos { get; set; } } public class Operacao { public string Filial { get; set; } public string Codigo { get; set; } public string Descricao { get; set; } } public class Apontamento { public int Id { get; set; } public string Filial { get; set; } public string OperacaoCodigo { get; set; } public virtual Operacao Operacao { get; set; } } 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"); } } public class ApontamentoMap : EntityTypeConfiguration { public ApontamentoMap() { ToTable("za4010"); HasKey(x => new { x.Filial, x.Id }); Property(x => x.OperacaoCodigo) .HasColumnName("za4_oper"); // HasRequired(x => x.Operacao) .WithMany() .HasForeignKey(x => new { x.Filial, x.OperacaoCodigo }) .WillCascadeOnDelete(false); } } public static class Program { static void main() { //this not work, and I need it to work. var context = new MyContext(); var newObj = new Apontamento { Filial = "01", OperacaoCodigo = "001" }; context.Apontamentos.Attach(newObj); var desc = newObj.Operacao.Descricao; // Here Operacao Property is null //this works var newObjTmp = new Apontamento { Filial = "01", OperacaoCodigo = "001" }; var operacao = context.Operacoes.Where(x => x.Codigo == "001"); context.Apontamentos.Attach(newObj); var descTmp = newObjTmp.Operacao.Descricao; // Operacao Property is ok. } }
はラディスラフ.... - 私は、サービス層、リポジトリとのUnitOfWorkに取り組んでいただきありがとうございます、必要があります私はUnitOfWorkとRepositoryにエンティティを作成するメソッドが公開されていますか?それを実装する正しい方法は何ですか? – will
実際のリポジトリパターンを使用する場合、2番目の方法は正しい方法ではありません。リポジトリにアクセスする前にデータを読み込むように依頼してください。それ以外の場合は、特殊なメソッドを公開してエンティティを作成したり、エンティティ作成用のファクトリを追加したり –