C#ASP .NET MVC实体类型[class_name]不是当前上下文的模型的一部分



当我尝试将对象 Question 添加到我的数据库时:

using (var dataTransaction = data.Database.BeginTransaction())
{
try
{
   foreach (var a in list)
   {
       list2.Add(a);
       counter += 1;
   }
   while (counter <= 20)
   {
       list2.Add(null);
       counter += 1;
   }
   var question = new Models.Questions
   {
       word_1 = list2[0],
       word_2 = list2[1],
       word_3 = list2[2],
   };
   data.Question.Add(question);
   data.SaveChanges();
   dataTransaction.Commit();
}

...我收到以下操作例外:

实体类型问题不是当前上下文的模型的一部分。

我已经做了很多研究来解决这个问题,但没有解决方案。

1。我添加了来自基础的参数" name = dataContext"的构造函数:

public DataContext() : base("name = DataContext")
    {
        Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
    }

2。我已经添加了方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Questions>();
    }

3。我尝试更改类型的OD数据,我的意思是word_1,word_2,word_3在我的数据库

4。我将基于ADO .NET的连接字符串更改为EF Designer模型连接字符串(和向后):

ado .net 基于:

<add name="questions_answersEntities" 
   connectionString="metadata=res://*/App_Data.QuestionsAnswers.csdl|
                                      res://*/App_Data.QuestionsAnswers.ssdl|
                                      res://*/App_Data.QuestionsAnswers.msl;
                              provider=System.Data.SqlClient;
                              provider connection string=
                                &quot;data source=IGORIGOR_SQL_SERVER;
                                initial catalog=questions_answers;
                                integrated security=True;
                                multipleactiveresultsets=True;
                                App=EntityFramework&quot;" 
  providerName="System.Data.EntityClient" />

EF Designer 基于:

<add name="DataContext"  
    providerName="System.Data.SqlClient"  
    connectionString="Server=.SQLEXPRESS;Database=QuestionsAnswers;Integrated Security=True;"/>  

我有类问题 dbcontext 继承如下所示。

public class Questions : DbContext
{
    [Key]
    public int id_question { get; set; }
    public string word_1 { get; set; }
    public string word_2 { get; set; }
    public string word_3 { get; set; }
}

我也有类 datacontext dbContext 继承:

public class DataContext : DbContext
{
    public DataContext() : base("name = DataContext")
    {
        Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
    }
    public DbSet<Questions> Question { get; set; }
    public DbSet<Answers> Answers { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Questions>();
    }
}
  1. 我还尝试使用data.entry(QUASION)而不是data.question.ADD(Question),并且出现相同的错误例外。

预先感谢您的帮助!

问题解决了。我意识到有关对象 data 的连接字符串是无效的,并且是指向 localdb 的默认连接字符串。
在homecontroller中,在

的范围内
using (SqlConnection conn = new SqlConnection(connString))

我已经更改了结构:

using ( var data = new Models.DataContext())

to

var data = new Models.DataContext();

我已经添加了明显的归因连接字符串 to data 作为follwing:

data.Database.Connection.ConnectionString = @"data source=IGORIGOR_SQL_SERVER;" + 
                "initial catalog = questions_answers;" + "integrated security = True;" + 
                "MultipleActiveResultSets = True;";

此数据后,我能够将数据保存在数据库中。

相关内容

最新更新