Entity framework core 如何停止EF 7将实体属性映射到列?

Entity framework core 如何停止EF 7将实体属性映射到列?,entity-framework-core,Entity Framework Core,在EF 6中,我可以向属性添加一个NotMapped属性,这样它就不会映射到列。如何在EF 7中做到这一点?我们还没有实现数据注释。(请参阅)您应该能够使用Fluent API完成此操作 modelBuilder.Entity().Ignore(e=>e.NotMappedProperty); 再加上Ricky和bricelam的答案 有两种方法可以忽略属性: 模型上的数据注释 public class Blog { public int BlogId { get; set; }

在EF 6中,我可以向属性添加一个
NotMapped
属性,这样它就不会映射到列。如何在EF 7中做到这一点?

我们还没有实现数据注释。(请参阅)您应该能够使用Fluent API完成此操作

modelBuilder.Entity().Ignore(e=>e.NotMappedProperty);

再加上Ricky和bricelam的答案

有两种方法可以忽略属性:

  • 模型上的数据注释

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }
    
        [NotMapped]
        public DateTime LoadedFromDatabase { get; set; }
    }
    
  • Fluent API在模型创建时重写

    class MyContext : DbContext
     {
         public DbSet<Blog> Blogs { get; set; }
    
         protected override void OnModelCreating(ModelBuilder modelBuilder)
         {
             modelBuilder.Entity<Blog>()
             .Ignore(b => b.LoadedFromDatabase);
         }
     }
    
     public class Blog
     {
         public int BlogId { get; set; }
         public string Url { get; set; }
    
         public DateTime LoadedFromDatabase { get; set; }
     }
    
    class MyContext:DbContext
    {
    公共数据库集博客{get;set;}
    模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
    {
    modelBuilder.Entity()
    .Ignore(b=>b.LoadedFromDatabase);
    }
    }
    公共类博客
    {
    public int BlogId{get;set;}
    公共字符串Url{get;set;}
    从数据库{get;set;}加载的公共日期时间
    }
    

  • 文档可用。

    已获取。但是我注意到
    Ignore
    方法在EF7 beta 1中不可用,这没关系。谢谢。@Ricky如果Ignore不可用,你是如何修复它的?@fiso在beta 8中,它支持
    NotMapped
    属性,所以只需在RC1中用
    [NotMapped]
    标记实体的属性,我发现
    NotMapped
    属性在未映射的只读属性上导致了
    StackOverflowException
    。我不得不使用上面的
    Ignore()
    方法来解决这个问题。