EF实例问题.做到一半.提示未将引用设置到对象的实例.

sugarbelle 2013-03-15 03:52:56
 class Question
{
public int Id { get; set; }
public string Content { get; set; }

public virtual ICollection<Answer> Answers { get; set; }
}

class Answer
{
public int Id { get; set; }
public string Content { get; set; }

public virtual Question Question { get; set; }
}
class AnswersContext : DbContext
{
public DbSet<Question> Questions { get; set; }
public DbSet<Answer> Answers { get; set; }
}
internal class Program
{
static void Main(string[] args)
{
DoWork();

Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}

static void DoWork()
{
Console.WriteLine("===Please enter five Questions and Answers===");
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Enter the Question:");
string question = Console.ReadLine();
Console.WriteLine("Enter the Answer:");
string answer = Console.ReadLine();
Console.WriteLine("Saving entry...");
SaveInput(question, answer);
}
PrintQuestions();
}


private static void SaveInput(string question, string answer)
{
using (var ctx = new AnswersContext())
{
ctx.Questions.Add(new Question()
{
Content = question,
Answers = { new Answer() { Content = answer } }
});
ctx.SaveChanges();
}
}

private static void PrintQuestions()
{
using (var ctx = new AnswersContext())
{
foreach (var q in ctx.Questions)
{
Console.WriteLine(q.Content);
foreach (var a in q.Answers)
{
Console.WriteLine(" -" + a.Content);
}
}
}
}

原文地址:
http://msdn.microsoft.com/en-us/data/jj819165
运行到 ctx.Questions.Add( 就提示未将引用设置到对象的实例了.以往这提示一般是某个对象是null的未实例化.
但我断点看都有数据呀.只是数据库好像没有生成.
1.EF的code first是要到什么步骤才会生成数据库?(实例文章上说写好类就按F5,main方法里还是空的.我按了也没生成)
2.这个错误是我哪里错了?大神指教下.谢谢
(我环境是vs2012+.net4.5+EF6最新装的)
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sugarbelle 2013-03-15
  • 打赏
  • 举报
回复
引用 2 楼 q107770540 的回复:
Quote: 引用 楼主 sugarbelle 的回复: (我环境是vs2012+.net4.5+EF6最新装的) quote] 据我所知,目前EF最新的才 到EF5吧。。。
nuget里输入:Install-Package EntityFramework -Pre 默认装的是ef6 -alpha3
sugarbelle 2013-03-15
  • 打赏
  • 举报
回复



引用 3 楼 q107770540 的回复:
C# code?123456789101112131415 private static void SaveInput(string question, string answer) { using (var ctx = new AnswersContext()) { ……

还是同样提示.
这次我看到 answer里面的question是null的.
q107770540 2013-03-15
  • 打赏
  • 举报
回复
 private static void SaveInput(string question, string answer)       
 {           
 	using (var ctx = new AnswersContext())            
	{                
               var answer=new Answer() { Content = answer };
               ctx.Answers.Add(answer);  //////  :(
               ctx.SaveChanges();    
		ctx.Questions.Add(new Question()                
			{                   
 				Content = question,                  
  				Answers = { answer },              
  			});                
		ctx.SaveChanges();       
        }    
  }
q107770540 2013-03-15
  • 打赏
  • 举报
回复
[quote=引用 楼主 sugarbelle 的回复:] (我环境是vs2012+.net4.5+EF6最新装的) quote] 据我所知,目前EF最新的才 到EF5吧。。。
q107770540 2013-03-15
  • 打赏
  • 举报
回复
因为你引用的外键表Answer是空的
 private static void SaveInput(string question, string answer)       
 {           
 	using (var ctx = new AnswersContext())            
	{                
               var answer=new Answer() { Content = answer };
               ctx.SaveChanges();    
		ctx.Questions.Add(new Question()                
			{                   
 				Content = question,                  
  				Answers = { answer },              
  			});                
		ctx.SaveChanges();       
        }    
  }

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧