【发布时间】:2013-01-04 14:03:01
【问题描述】:
我正在尝试使用实体框架创建一对多关系,以使用 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; }
}
Fluent API
UsuarioConfiguration
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 上。
【问题讨论】:
-
它们是从数据库中获取但没有出现在响应 XML/JSON 中还是根本没有从数据库中获取
-
我正在尝试获取数据库并序列化为 json 文件,将电子邮件列表始终为空,我将项目放入数据库中..
-
你是直接放的还是通过ef放的?
-
是的,我把数据来自迁移的种子
标签: c# entity-framework asp.net-web-api one-to-many relationship