在ASP.NET MVC 4实体框架中仅使用getter for view创建模型属性

Bur*_*din 0 asp.net entity-framework razor

我正在使用asp.net mvc 4和实体框架代码优先方法.我有以下实体模型

public class User
{
    public virtual int Id { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String MiddleName { get; set; }
    public virtual String LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

对于用户列表视图页面,我需要显示全名,我试图在用户模型中创建一个get only属性

public virtual String FullName{
    get{
        return FirstName + " " + MiddleName + " " + LastName;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否会起作用,此外我也不希望实体框架将其映射到数据库列.

我是否可以仅为视图使用从其他属性生成的类似get only属性?任何人都可以给我任何关于该做什么的建议吗?

mre*_*ros 6

根据您配置域实体的方式,通过DataAnnotations或EntityConfigurationType类,您可以使用[NotMapped] DataAnnotation

public class User
{
    public virtual int Id { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String MiddleName { get; set; }
    public virtual String LastName { get; set; }
    [NotMapped]
    public virtual String FullName 
    {
        get{
             return FirstName + " " + MiddleName + " " + LastName;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者在实现EntityTypeConfiguration的特定类中,您可以将属性设置为由EntityFramework忽略,然后将其添加到OnModelCreating事件中的上下文配置集合中:

public class UserConfiguration : EntityTypeConfiguration<User>
{
    public UserConfiguration()
    {
        Ignore(u=>u.FullName);
    }
}
Run Code Online (Sandbox Code Playgroud)