2014-01-25 63 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