EF MVC连接字符串和关联

时间:2014-01-25 16:27:20

标签: c# asp.net-mvc linq entity-framework

我有一个应用程序,如果我从web-config获取连接字符串一切正常,如果我在创建新的Context时设置连接字符串,如下所示:

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

但它仍然不起作用

2 个答案:

答案 0 :(得分:0)

我认为你应该为你的上下文类创建一个部分类,它将把连接字符串作为构造函数中的参数,如下所示:

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

在此之后,如果您使用connectionstring作为参数创建对象,那么这将起作用,即

YourContextClass context = new YourContextClass ("myconnectionString");

由于

答案 1 :(得分:0)

两种解决方案:

  • 使用预先加载(使用.Include() - 参见http://msdn.microsoft.com/en-us/data/jj574232#eager

  • 使用延迟加载 - 属性“ContactsLegalDetails”应该是虚拟的 - 即启用延迟加载,因此在您不尝试访问ContactsLegalDetails之前,您将不会拥有它。

修改:

无需触摸:

context.Configuration.LazyLoadingEnabled

默认情况下会启用它,您可以使用此属性禁用LazyLoading来序列化对象,例如。