Reputation: 307
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
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
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