Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Entity Framework Core和ASP.NET Web API创建工作列表并保存它们?_C#_Asp.net_Entity Framework Core - Fatal编程技术网

C# 如何使用Entity Framework Core和ASP.NET Web API创建工作列表并保存它们?

C# 如何使用Entity Framework Core和ASP.NET Web API创建工作列表并保存它们?,c#,asp.net,entity-framework-core,C#,Asp.net,Entity Framework Core,我正在制作一个类似于谷歌教室的网络应用,你可以加入课堂。 我有一个类“Account”,在该类中我有一个列表,其中应该包含该帐户所加入的所有类的ID。我试图使列表成为一个长列表,但我无法这样做,因为我得到了错误: System.InvalidOperationException:'属性 无法映射“Account.\u classesJoined”,因为它的类型为 “列表”不是受支持的基元类型或有效实体 类型。可以显式映射此属性,也可以使用 “[NotMapped]”属性,或使用中的“Entity

我正在制作一个类似于谷歌教室的网络应用,你可以加入课堂。 我有一个类“Account”,在该类中我有一个列表,其中应该包含该帐户所加入的所有类的ID。我试图使列表成为一个长列表,但我无法这样做,因为我得到了错误:

System.InvalidOperationException:'属性 无法映射“Account.\u classesJoined”,因为它的类型为 “列表”不是受支持的基元类型或有效实体 类型。可以显式映射此属性,也可以使用 “[NotMapped]”属性,或使用中的“EntityTypeBuilder.Ignore” “OnModelCreating”

我解决这个问题的方法是创建一个类“JoinedClassId”,用一个属性“classIdNumber”来创建一个列表。但是,在测试期间,我注意到添加到Account对象的JoinedClassID没有保存。我认为这是因为我没有为JoinedClassId类保存数据库表

我是否必须为JoinedClassId类创建数据库上下文和控制器?我不想从API中操作JoinedClassId类,我只是将其用作数据容器。有没有一种方法可以创建一个长列表并保存它,或者保存JoinedClassID?

在EF Core中,“还不支持没有实体类来表示联接表的多对多关系”。 Book->Category有许多要重新注册的表,因此这将在DB中创建3个表: 图书、分类和图书分类

 public class Book
    {
        public int BookId { get; set; }
        public string Title { get; set; }
        //public ICollection<Category> Categories { get; set; } // cannot appear 

        // For the many-to-many rel
        public List<BookCategory> BookCategories { get; set; }
    }

    public class Category
    {
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
        //public ICollection<Book> Books { get; set; } // cannot appear 

        // For the many-to-many rel
        public List<BookCategory> BookCategories { get; set; }
    }

    // Class because of the many-to-many rel

    public class BookCategory
    {
        public int BookId { get; set; }
        public Book Book { get; set; }

        public int CategoryId { get; set; }
        public Category Category { get; set; }
    }

    public class MyContextDbContext : DbContext
    {
        public MyContextDbContext(DbContextOptions<MyContextDbContext> dbContextOptions)
            : base(dbContextOptions)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<BookCategory>()
                .HasKey(t => new { t.BookId, t.CategoryId });

            modelBuilder.Entity<BookCategory>()
                .HasOne(bctg => bctg.Book)
                .WithMany(ctg => ctg.BookCategories)
                .HasForeignKey(book => book.CategoryId);

            modelBuilder.Entity<BookCategory>()
                .HasOne(bctg => bctg.Category)
                .WithMany(ctg => ctg.BookCategories)
                .HasForeignKey(ctg => ctg.BookId);

        }

        public DbSet<Book> Book { get; set; }
        public DbSet<Category> Category { get; set; }
    }
公共课堂教材
{
public int BookId{get;set;}
公共字符串标题{get;set;}
//无法显示公共ICollection类别{get;set;}//
//对于多对多关系
公共列表图书类别{get;set;}
}
公共类类别
{
public int CategoryId{get;set;}
公共字符串CategoryName{get;set;}
//公共ICollection book{get;set;}//无法显示
//对于多对多关系
公共列表图书类别{get;set;}
}
//类,因为多对多关系
公共类图书类别
{
public int BookId{get;set;}
公共图书{get;set;}
public int CategoryId{get;set;}
公共类别{get;set;}
}
公共类MyContextDbContext:DbContext
{
公共MyContextDbContext(DbContextOptions DbContextOptions)
:base(dbContextOptions)
{
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasKey(t=>new{t.BookId,t.CategoryId});
modelBuilder.Entity()
.HasOne(bctg=>bctg.Book)
.WithMany(ctg=>ctg.BookCategories)
.HasForeignKey(book=>book.CategoryId);
modelBuilder.Entity()
.HasOne(bctg=>bctg.Category)
.WithMany(ctg=>ctg.BookCategories)
.HasForeignKey(ctg=>ctg.BookId);
}
公共数据库集书籍{get;set;}
公共数据库集类别{get;set;}
}

您有多对多关系,帐户可以加入多个类,类可以加入多个帐户。尝试实现一个实体,该实体将合并有关帐户加入单个类的数据->AccountClass{AccountId,ClassId}。这是否回答了您的问题?