Vengrovskyi
Vengrovskyi

Reputation: 307

Avoiding mapping property to table

Can anybody tell me about how I can avoid mapping some property from my model to table using code first approach?

Example:

public class Post
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Posted")]
    public DateTime Created { get; set; }

    [Display(Name = "Modified")]
    public DateTime? Modified { get; set; }

    [Required]
    [MaxLength(256)]
    public string Title { get; set; }

    [Required]
    public string Body { get; set; }

    public int? UserId { get; set; }

    public string UserName { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }

    public virtual ICollection<Tag> Tags { get; set; } 
}

I want UserName do not map into table. It is possible or not in EF?

Upvotes: 2

Views: 151

Answers (2)

Matt Hamilton
Matt Hamilton

Reputation: 204259

In code first, override the OnModelCreating method in your DbContext derived class:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{   
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Post>().Ignore(p => p.UserName);
}

Upvotes: 3

armen.shimoon
armen.shimoon

Reputation: 6401

Add a

[NotMapped] 

attribute to the desired property:

public class Post
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Posted")]
    public DateTime Created { get; set; }

    [Display(Name = "Modified")]
    public DateTime? Modified { get; set; }

    [Required]
    [MaxLength(256)]
    public string Title { get; set; }

    [Required]
    public string Body { get; set; }

    public int? UserId { get; set; }

    [NotMapped]
    public string UserName { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }

    public virtual ICollection<Tag> Tags { get; set; } 
}

Upvotes: 4

Related Questions