简体   繁体   中英

Entity Framework doesn't generate all tables from database

This is my diagram in my database:

在此处输入图片说明

but when I use Entity Framework it was like that:

在此处输入图片说明

It hasn't table name ListSuiteQuestion but It has 2 new property in class Question and Suite :

enter image description here

Table ListSuiteQuestion is automatically created by sql because in sql we don't have something called many to many relationship (m:n) and sql creates another table to implement m:n relationship with keys containing the primary key of two relationship tables is also the name of the combination of the names of the two relation tables. Within your entity framework by accessing each table through another table you have access to that table so there is no need to define it by entity framework. However, if you intend to customize or add a field to a third table you can manually build it into the code and then display it entity framework, though you don't need to.

if you want create it manually in code do like this :

 public class Suite
    {
        //another property
        public int IdSuite { get; set; }
        public virtual ICollection<SuitQuestions> Questions { get; set; }
    }
    public class Question
    {
        //another property
        public int IdQuestion { get; set; }
        public virtual ICollection<SuitQuestions> Suites { get; set; }
    }
    public class SuiteQuestions
    {
        public Suite Suite { get; set; }
        public int IdSuite { get; set; }
        public  Question Question { get; set; }
        public int IdQuestion { get; set; }

        //add custome property if you need

    }

and config it.

It's correct. A question has a list of suites and a suite has a list of questions. If you do:

        var suite = context.Suites.Find(5);
        var question = context.Questions.Find(30);
        suite.Questions.Add(question);
        // And update this suite object here;

You will see a new record in ListSuiteQuestion Tables with IdSuite = 5 and IdQuestion = 30. The class ListSuiteQuestion doesn't need to be created. However, if you really want to create the class you have to add Id to the Table ListSuiteQuestion as primary key.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM