实体框架数据注释

时间:2015-09-03 12:28:12

标签: c# entity-framework

public partial class SystemUser
{
    [Display(Name = "User")]
    public string Username { get; set; }
    [Display(Name = "Pass")]
    public string Password { get; set; }
    public Nullable<bool> Type { get; set; }
}

使用此语句从数据库查询时,数据注释正常工作:

context.SystemUsers.ToList();

但是当我使用&#39; new&#39;我的查询中的关键字,数据注释会被自动忽略。

context.SystemUsers.Select(u=> new
{
    u.Username,
    u.Type
});

我想使用我告诉的第二个查询,并防止数据注释被忽略 什么是解决方案?

2 个答案:

答案 0 :(得分:0)

如果您需要数据注释,请按以下方式编写:

context.SystemUsers.Select(u=> new SystemUser
{
    u.Username,
    u.Type
});

因为您已在SystemUser视图模式中提供了详细信息,并且如果仅使用new创建,则会创建不包含数据注释的匿名对象。

答案 1 :(得分:0)

  

当我在查询中使用'new'关键字时,会自动忽略数据注释

这些数据注释仅在<h1 class="title">&{'login.title'}</h1> 类型上表示。但是您的@import play.i18n._ <h1>@Messages.get("login.title")</h1> 子句正在将对象转换为新的匿名类型。它可能具有与SystemUser相同的直观结构(相同的属性名称/类型/等),但作为静态类型语言,它绝对是一个.Select()对象。

要使用SystemUser类型,您必须选择该类型:

SystemUser