包括/排除类型

包括/排除类型

包括在模型中的一个类型意味着,EF有关于该类型的元数据,并将尝试从/到数据库的读取和写入实例。

在这个文章中:

        包括/排除类型

             公约

             数据注解

             Fluent API

 

公约

 

通过规则,暴露在你上下文的DbSet属性里的类型被包含在你的模型里。此外,在OnModelCreating方法提到的类型也包括在内。最后,通过递归地探索发现的类型的导航属性所发现的任何类型也包括在模型中。

 

例如,以下的代码列出了所有三种被发现的类型:

          Blog是因为它对上下文的DbSet属性暴露。

            Post因为它是通过Blog.Posts导航属性被发现的。

            AuditEntry因为它被在OnModelCreating方法里提到的。

 

 

 

class MyContext : DbContext

    {

        public DbSet<Blog> Blogs { get; set; }

 

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            modelBuilder.Entity<AuditEntry>();

        }

    }

 

    public class Blog

    {

        public int BlogId { get; set; }

        public string Url { get; set; }

 

        public List<Post> Posts { get; set; }

    }

 

    public class Post

    {

        public int PostId { get; set; }

        public string Title { get; set; }

        public string Content { get; set; }

 

        public Blog Blog { get; set; }

    }

 

    public class AuditEntry

    {

        public int AuditEntryId { get; set; }

        public string Username { get; set; }

        public string Action { get; set; }

    }

 

 

 

 

 

数据注解

 

你能使用数据注解来从模型里排除一个类型

 

public class Blog

    {

        public int BlogId { get; set; }

        public string Url { get; set; }

 

        public BlogMetadata Metadata { get; set; }

    }

 

    [NotMapped]

    public class BlogMetadata

    {

        public DateTime LoadedFromDatabase { get; set; }

    }

 

 

Fluent API

 

你能使用Fluent API从模型里排除一个类型。

 

class MyContext : DbContext

    {

        public DbSet<Blog> Blogs { get; set; }

 

        protected override void OnModelCreating(ModelBuilder modelBuilder)

        {

            modelBuilder.Ignore<BlogMetadata>();

        }

    }

 

    public class Blog

    {

        public int BlogId { get; set; }

        public string Url { get; set; }

 

        public BlogMetadata Metadata { get; set; }

    }

 

    public class BlogMetadata

    {

        public DateTime LoadedFromDatabase { get; set; }

    }

转载于:https://www.cnblogs.com/Boy-KasnLu/p/6024450.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值