gpt4 book ai didi

entity-framework-4 - 附加对象后加载属性

转载 作者:行者123 更新时间:2023-12-05 00:34:49 25 4
gpt4 key购买 nike

我在问这里之前尝试过谷歌搜索,但找不到任何解决方案。

我有这两个类和一个映射一对多

我正在尝试附加一个新对象

公共(public)类 MyContext : DbContext
{
公共(public) IDbSet Operacoes { 获取;放; }
公共(public) IDbSet Apontamentos { 获取;放; }
}

公开课歌剧
{
公共(public)字符串 Filial { 得到;放; }
公共(public)字符串 Codigo { 获取;放; }
公共(public)字符串 Descricao { 获取;放; }
}

公共(public)课 Apontamento
{
公共(public) int ID { 获取;放; }
公共(public)字符串 Filial { 得到;放; }
公共(public)字符串 OperacaoCodigo { 获取;放; }
公共(public)虚拟 Operacao Operacao { get;放; }
}

公共(public)类 OperacaoMap : EntityTypeConfiguration
{
公共(public) OperacaoMap()
{
ToTable("za6010");
HasKey(x => new { x.Filial, x.Codigo })
.Property(x => x.Codigo).HasColumnName("za6_cod");

属性(x => x.Descricao).HasColumnName("za6_desc");
}
}

公共(public)类 ApontamentoMap : EntityTypeConfiguration
{
公共(public) ApontamentoMap()
{
ToTable("za4010");

HasKey(x => new { x.Filial, x.Id });

属性(x => x.OperacaoCodigo)
.HasColumnName("za4_oper");

//
HasRequired(x => x.Operacao)
。与许多()
.HasForeignKey(x => new { x.Filial, x.OperacaoCodigo })
.WillCascadeOnDelete(false);
}
}

公共(public)静态类程序
{
静态无效主()
{
//这不起作用,我需要它来工作。
var context = new MyContext();
var newObj = 新的 Apontamento
{
孝顺 = "01",
OperacaoCodigo = "001"
};
context.Apontamentos.Attach(newObj);
var desc = newObj.Operacao.Descricao;//这里 Operacao 属性为 null

//这有效
var newObjTmp = 新的 Apontamento
{
孝顺 = "01",
OperacaoCodigo = "001"
};
var operacao = context.Operacoes.Where(x => x.Codigo == "001");
context.Apontamentos.Attach(newObj);
var descTmp = newObjTmp.Operacao.Descricao;//Operacao 属性没问题。

}
}

最佳答案

您的第一种情况不起作用,因为您的实体没有被动态代理包装,并且导航属性不能被延迟加载。试试这个:

var context = new MyContext();
var newObj = context.Apontamentos.Create();
newObj.Filial = "01",
nowObj.OperacaoCodigo = "001"

context.Apontamentos.Attach(newObj);
var desc = newObj.Operacao.Descricao;

您还可以继续使用当前解决方案并显式加载属性:
 var context = new MyContext();
var newObj = new Apontamento
{
Filial = "01",
OperacaoCodigo = "001"
};
context.Apontamentos.Attach(newObj);
context.Entry(newObj).Reference(o => o.Operacao).Load();
var desc = newObj.Operacao.Descricao;

关于entity-framework-4 - 附加对象后加载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com