相关疑难解决方法(0)

实体框架和连接池

我最近开始在我的.NET 4.0应用程序中使用Entity Framework 4.0,并对与池化相关的一些事情感到好奇.

  1. 据我所知,连接池由ADO.NET数据提供程序管理,在我的情况下是MS SQL服务器.当您实例化新的实体context(ObjectContext)时,这是否适用,即无参数new MyDatabaseModelEntities()

  2. a)为应用程序创建全局实体上下文(即一个静态实例)或b)使用using块为每个给定操作/方法创建和公开实体上下文有哪些优点和缺点.

  3. 我应该了解的某些场景的任何其他建议,最佳实践或常用方法?

.net database ado.net entity-framework connection-pooling

264
推荐指数
3
解决办法
11万
查看次数

解决"ObjectContext实例已被释放,不能再用于需要连接的操作"InvalidOperationException

我试图填充GridView使用Entity Frameworkm但每次我收到以下错误:

"对象'COSIS_DAL.MemberLoan'上的属性访问器'LoanProduct'引发了以下异常:ObjectContext实例已被释放,不能再用于需要连接的操作."

我的代码是:

public List<MemberLoan> GetAllMembersForLoan(string keyword)
{
    using (CosisEntities db = new CosisEntities())
    {
        IQueryable<MemberLoan> query = db.MemberLoans.OrderByDescending(m => m.LoanDate);
        if (!string.IsNullOrEmpty(keyword))
        {
            keyword = keyword.ToLower();
            query = query.Where(m =>
                  m.LoanProviderCode.Contains(keyword)
                  || m.MemNo.Contains(keyword)
                  || (!string.IsNullOrEmpty(m.LoanProduct.LoanProductName) && m.LoanProduct.LoanProductName.ToLower().Contains(keyword))
                  || m.Membership.MemName.Contains(keyword)
                  || m.GeneralMasterInformation.Description.Contains(keyword)

                  );
        }
        return query.ToList();
    }
}


protected void btnSearch_Click(object sender, ImageClickEventArgs e)
{
    string keyword = txtKeyword.Text.ToLower();
    LoanController c = new LoanController();
    List<COSIS_DAL.MemberLoan> list = new List<COSIS_DAL.MemberLoan>();
    list = c.GetAllMembersForLoan(keyword);

    if (list.Count <= 0)
    { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework

113
推荐指数
4
解决办法
15万
查看次数

绑定时已释放ObjectContext实例

这是我的代码:

public class JobsRepository:BaseNewsletterRepository
{
   public IEnumerable<Job> GetJobs()
   {
        var jobs = Newsletterctx.Jobs.Include("Info").OrderBy(o => o.JobID);             
        return jobs.AsEnumerable();
   }
}

public class BusinessNewsletter
{
   public static IEnumerable<Job> GetJobs()
   {      
        using (JobsRepository jobsRepository = new JobsRepository())
        {
            return  jobsRepository.GetJobs();
        }    
    }
}    

rptJobs.DataSource = BusinessNewsletter.GetJobs();
rptJobs.DataBind();
Run Code Online (Sandbox Code Playgroud)

当我尝试绑定时,我得到错误:

ObjectContext实例已被释放,不能再用于需要连接的操作.

是唯一的解决方案,在BusinessNewsletter类中转换和返回List吗?

public static IList<Job> GetJobs()
{
    IList<Job> job;
    using (JobsRepository jobsRepository = new JobsRepository())
    {
        job = jobsRepository.GetJobs().ToList();
    }
    return job;
}
Run Code Online (Sandbox Code Playgroud)

另一个相关问题:

如何在不指定特定类型的情况下检索数据并将数据绑定到转发器(List<type>IEnumerable<type>)
如果我返回如下特定对象,我需要它:

var specificJob = from job …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework exception-handling

4
推荐指数
1
解决办法
6488
查看次数

DbContext已被处理,没有任何意义

我正在创建一个C#Web应用程序,在那里我可以添加公司以及公司拥有分支机构的地方.一家公司可以拥有多个分支机构.在一个地方可能有几家公司.所以之间的关系Companies,并Territory多对多.

这是我目前的公司模型,

public class CompanyModel
{

    [HiddenInput(DisplayValue = false)]
    public long CompanyId { get; set; }

    [Display(Name = "Company Name")]
    [Required(ErrorMessage = "* required")]
    public string CompanyName { get; set; }

    [Display(Name = "Phone Number")]
    [Required(ErrorMessage = "* required")]
    [RegularExpression(@"\d*", ErrorMessage = "Not a valid phone number")]
    public string PhoneNo { get; set; }


    [Display(Name = "Post Code List", Prompt = "eg. BA5, BS16")]
    public string PostCodeList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它有一个文本框,它将采用逗号分隔的字符串.所以我用foreach …

c# entity-framework asp.net-mvc-3

4
推荐指数
1
解决办法
3715
查看次数

类型'System.ObjectDisposedException'的异常

我有以下EF代码的第一个代码.它工作正常.但当我寻找'club2.Members'的价值时,它会说:

'club2.Members'抛出了'System.ObjectDisposedException'类型的异常.

消息是:

ObjectContext实例已被释放,不能再用于需要连接的操作.

我没有为Members属性设置值.没关系.但是它不应该在内部引起任何异常.

  1. 有没有办法克服这个例外?
  2. 删除此异常是否有助于提高性能?
  3. 为什么这个异常不会导致程序执行终止?

注意:我不需要俱乐部实体中的会员数据(在我打电话的时候).即使当时没有成员加入俱乐部.我只需要摆脱异常; 不使用预先加载来加载数据.如何避免异常

在此输入图像描述

namespace LijosEF
{

public class Person
{
    public int PersonId { get; set; }
    public string PersonName { get; set; }
    public virtual ICollection<Club> Clubs { get; set; }
}

public class Club 
{
    public int ClubId { get; set; }
    public string ClubName { get; set; }
    public virtual ICollection<Person> Members { get; set; }

}




//System.Data.Entity.DbContext is from EntityFramework.dll
public class NerdDinners : System.Data.Entity.DbContext
{

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework ef-code-first

3
推荐指数
1
解决办法
3万
查看次数