我试图填充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) 实体框架生成的上下文对象不是线程安全的.
如果我使用两个独立的实体上下文,每个线程一个(并SaveChanges()在每个上调用),这会是线程安全的吗?
// this method is called from several threads concurrently
public void IncrementProperty()
{
var context = new MyEntities();
context.SomeObject.SomeIntProperty++;
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我相信实体框架上下文实现了某种"计数器"变量,它跟踪上下文中的当前值是否是新鲜的.
我在我的应用程序中使用了ninject IoC,特别是以下内容:
kernel.Bind<RepositoryFactories>().To<RepositoryFactories>()
.InSingletonScope();
Run Code Online (Sandbox Code Playgroud)
我想使用Unity IoC实现这一点,但是有人可以告诉我如何使它成为同样的,它的含义是什么"InSingletonScope()"?以下工作,但我担心它没有正确完成,因为可能需要指定Singleton.
container.RegisterType<RepositoryFactories, RepositoryFactories>();
Run Code Online (Sandbox Code Playgroud)