gpt4 book ai didi

c# - Entity Framework Code First Web.API 中的一对多关系

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:21 27 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 创建一对多关系,以使用 Web.API 返回转换 json 对象。

我正在创建一个用户有很多电子邮件功能的场景。

然而,带来的用户实体中的 json 文件包含一个始终显示为空的电子邮件列表。

用户实体

[DataContract]
public class UsuarioEntity : BaseEntity
{
[DataMember]
public string UserName { get; set; }

[DataMember]
public string Password { get; set; }

[DataMember]
public bool Ativado { get; set; }

[DataMember]
public ICollection<EmailEntity> Emails { get; private set; }
}

电子邮件实体

 [DataContract]
public class EmailEntity : BaseEntity
{

[DataMember]
public string Email { get; set; }

[DataMember]
public bool Ativo { get; set; }

[DataMember]
public bool Principal { get; set; }

[DataMember]
public DateTime DataCadastro { get; set; }

[DataMember]
public UsuarioEntity Usuario { get; set; }

}

流畅的 API

Usuario配置

            ToTable("tbl_usuarios");

HasKey(a => new {a.Id, a.UserName});

Property(a => a.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("cd_id_usuario");

Property(a => a.UserName)
.HasMaxLength(32)
.HasColumnName("nm_usuario");

Property(a => a.Password)
.IsRequired()
.HasMaxLength(32)
.HasColumnName("tx_senha");

Property(a => a.DataCadastro)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
.HasColumnType("datetime")
.IsRequired()
.HasColumnName("dt_cadastro");

HasMany(o => o.Emails)
.WithRequired();

电子邮件配置

            ToTable("tbl_email_usuario");

HasKey(a => new { a.Id, a.Email });

Property(a => a.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
.HasColumnName("cd_id_email");

Property(a => a.Email)
.HasMaxLength(150)
.HasColumnName("nm_email");

Property(a => a.DataCadastro)
.HasColumnType("datetime")
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)
.IsRequired()
.HasColumnName("dt_cadastro")

我尝试以这种方式将 EF 与 Web api 结合使用:

public IQueryable<UsuarioEntity> Get()
{
PlainContext context = new PlainContext();
return context.Usuarios;
}

除了返回不是预期的

[{"Id":1,"Ativado":true,"DataCadastro":"\/Date(1357307720730-0200)\/","Emails":[],"Password":"senha456","UserName":"recapix"}]

我只拥有并注册了电子邮件,它们不会出现在 Json 中。

最佳答案

您的实体不支持延迟加载,因此您必须明确定义您也想加载相关电子邮件:

return context.Usarios.Include(u => u.Emails);

关于c# - Entity Framework Code First Web.API 中的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158626/

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