当我尝试将对象 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=
"data source=IGORIGOR_SQL_SERVER;
initial catalog=questions_answers;
integrated security=True;
multipleactiveresultsets=True;
App=EntityFramework""
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>();
}
}
- 我还尝试使用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;";
此数据后,我能够将数据保存在数据库中。