本文介绍了上的实体类型的导航尚未添加到模型,或忽略,或的EntityType忽略的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



 公共类注
{
公众注意()
{
CreationDate =日期时间。现在;
标签=新的HashSet<吊牌及GT;();
零件=新的HashSet<部分>();
}

公众诠释ID {搞定;组; }
公共虚拟的ICollection<标记和GT;标签{搞定;组; }
公共虚拟的ICollection<部分>部分{搞定;组; }
公众的DateTime? CreationDate {搞定;组; }
}


公共类标签
{
公共标签()
{
注意=新的HashSet<注意> ();
}

公众诠释ID {搞定;组; }
公共字符串名称{;组; }

公共虚拟的ICollection<注意>注意{搞定;组; }
}



这同时增加了迁移发生了:



public class Note
    {
        public Note()
        {
            CreationDate = DateTime.Now;
            Tags = new HashSet<Tag>();
            Parts = new HashSet<Part>();
        }

        public int ID { get; set; }
        public virtual ICollection<Tag> Tags { get; set; }
        public virtual ICollection<Part> Parts { get; set; }
        public DateTime? CreationDate { get; set; }
    }


public class Tag
    {
        public Tag()
        {
            Notes = new HashSet<Note>();
        }

        public int ID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Note> Notes { get; set; }
    }

It happens while adding a migration:

Why do you think it happens?

EDIT:DataDbContext:

public class DataDbContext : DbContext
    {
        public DbSet<Note> Notes { get; set; }
        public DbSet<Tag> Tags { get; set; }
        public DbSet<Part> Parts { get; set; }
    }
解决方案

You have Many-to-many relationship there. As the documentation says: http://docs.efproject.net/en/latest/modeling/relationships.html#id21

Many-to-many relationships without an entity class to represent the join table are not yet supported. However, you can represent a many-to-many relationship by including an entity class for the join table and mapping two separate one-to-many relationships.

So you must create additional "join" class like this:

public class NoteTag
    {
        public int NoteId { get; set; }
        public Note Note { get; set; }

        public int TagId { get; set; }
        public Tag Tag { get; set; }
    }

then, replace

 ICollection<Tag> Tags {set;get}

in your Note class to

 ICollection<NoteTag> NoteTags {set;get}

and also in Tag class:

ICollection<Note> Notes {set;get;}

to

ICollection<NoteTags> NoteTags {set;get}

and then override OnModelCreating method in DbContext:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<NoteTag>()
                .HasKey(t => new { t.NoteId, t.TagId });

            modelBuilder.Entity<NoteTag>()
                .HasOne(pt => pt.Note)
                .WithMany(p => p.NoteTags)
                .HasForeignKey(pt => pt.NoteId);

            modelBuilder.Entity<NoteTag>()
                .HasOne(pt => pt.Tag)
                .WithMany(t => t.NoteTags)
                .HasForeignKey(pt => pt.TagId);
        }

这篇关于上的实体类型的导航尚未添加到模型,或忽略,或的EntityType忽略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 15:02