2014-01-25 64 views
0

我有一個應用程序,如果我把從網絡配置一切連接字符串工作好,如果我設置連接字符串,當我創建一個新的上下文是這樣的:EF MVC連接字符串和協會

MyContext context = new MyContext("myconnectionString"); 

當我執行查詢,我試圖從一個實體傳遞到另一個返回我是空這樣

MyContext context = new MyContext("myconnectionString"); 

var qLegals = from x in context.ContactsLegals 
         where x.end == null 
         orderby x.start descending 
         select x; 

qLegals.First().ContactsLegalDetails.First(); 

ContactsLegalDetails爲null,就像是已經失去了所有的社團 我試圖改變

context.Configuration.LazyLoadingEnabled 

,但它仍然無法正常工作

回答

0

兩個解決方案:

  • 使用預先加載(使用.INCLUDE() - 見http://msdn.microsoft.com/en-us/data/jj574232#eager

  • 使用延遲加載 - 屬性 「ContactsLegalDetails」 應該是虛擬的 - 多數民衆贊成啓用延遲加載,所以直到你不會嘗試訪問ContactsLegalDetails你不會擁有它。

編輯:

是沒有用的觸摸:

context.Configuration.LazyLoadingEnabled 

在默認情況下都將重新啓動,你可以使用這個屬性來禁用惰性加載到序列化e.g對象。

0

我想你應該爲你的上下文類的分部類,這將要採取的連接字符串作爲參數的構造函數是這樣的:

public partial class YourContextClass: DbContext 
{ 
    public YourContextClass(string connectionString) : base(connectionString) 
    { 
      Database.Connection.ConnectionString = connectionString; 
    } 
} 

而且在此之後,如果你創建的連接字符串作爲參數的對象,那麼這將工作,即

YourContextClass context = new YourContextClass ("myconnectionString"); 

謝謝

+0

我的問題是不是連接到數據庫,這工作得很好,我的問題是不加載表之間的關係。 – Berry

+0

現在添加包含<>添加到我需要它的所有表的查詢工作...但我不會添加包括所有我的查詢。有一個解決方案? – Berry