2013-04-10 71 views
1

我是新來的實體框架,不明白爲什麼CommandBehavior.SequentialAccess是必需的ExecuteReader。下面是我的代碼..爲什麼CommandBehavior.SequentialAccess在Entity Framework的ExecuteReader中是必需的?

using (var conn = new EntityConnection("name=EFRecipesEntities")) 
    { 
     Console.WriteLine("Customers..."); 
     var cmd = conn.CreateCommand(); 
     conn.Open(); 
     cmd.CommandText = @"select c.Name, C.Email from 
     EFRecipesEntities.Customers as c"; 
     using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) 
     { 
      while (reader.Read()) 
      { 
       Console.WriteLine("{0}'s email is: {1}", 
       reader.GetString(0), reader.GetString(1)); 
      } 
     } 
    } 

任何幫助..

+0

如果您不使用SequentialAccess會發生什麼?有一個ExceuteReader重載不會執行命令行爲。如果你使用EF,你爲什麼要下降到ADO.NET而不是使用linq查詢? – Pawel 2013-04-10 20:10:14

+0

「無法在當前作用域或上下文中解析,請確保所有引用的變量都在作用域中,所需的模式已加載,並且名稱空間被正確引用。發生此異常。我只是在實踐EF,「從實體SQL語句返回對象」 – 2013-04-11 03:05:26

+2

我的建議是隻使用實體Sql。只需使用Linq to Entities,就可以使用Entity Sql實現幾乎所有的功能。在實踐中,你可能永遠不必使用Entity Sql。你得到的例外是來自EntitySql語法分析器。我不完全知道什麼是錯的(可能是'C.Email'中的大寫字母C,而實體是別名'c'?)。我不知道爲什麼改變CommandBehavior會解決這個問題。 – Pawel 2013-04-11 05:05:10

回答

相關問題