标签: objectcontext

可重用的ObjectContext或新的ObjectContext用于每组操作?

我是实体框架的新手,我刚开始在空闲时间玩它.我遇到的一个主要问题是如何处理ObjectContexts.

这些通常是首选/推荐的:

这个

public class DataAccess{

    MyDbContext m_Context;

    public DataAccess(){
        m_Context = new MyDbContext();        
    }

    public IEnumerable<SomeItem> GetSomeItems(){
        return m_Context.SomeItems;
    }

    public void DeleteSomeItem(SomeItem item){
        m_Context.DeleteObject(item);
        m_Context.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

或这个?

public class DataAccess{

    public DataAccess(){ }

    public IEnumerable<SomeItem> GetSomeItems(){
        MyDbContext context = new DbContext();
        return context.SomeItems;
    }

    public void DeleteSomeItem(SomeItem item){
        MyDbContext context = new DbContext();
        context.DeleteObject(item);
        context.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities data-access-layer objectcontext

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

在层之间传递Entity对象的正确方法?

我只是学习实体框架,并在将其与我的分层代码结构相结合方面取得了一些进展.我有2个可视图层,一个业务层和一个数据访问层.

我的问题是在层之间传递实体对象.此代码示例不起作用:

// BLL
public static void Test1()
{
 List<User> users = (from u in GetActiveUsers()
      where u.ID == 1
      select u).ToList<User>();

 // Do something with users
}

// DAL
public static IQueryable<User> GetActiveUsers()
{
 using (var context = new CSEntities())
 {
  return from u in context.Users
      where u.Employee.FirstName == "Tom"
      select u;
 }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息ObjectContext实例已被释放,不能再用于需要连接的操作.

如果我从GetActiveUsers方法中删除使用它,它工作正常.

我知道这是危险的做法,因为GC可以在任何给定时间处理上下文并搞砸我的BLL.

那么,在层之间传递信息的正确方法是什么?我是否还需要传递上下文?

idisposable entity-framework-4 objectcontext

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

在数据库第一种方法中使用DbContext与Objectcontext定义数据注释

我使用与实体框架数据库的第一种方法,当我习惯使用的ObjectContext的数据库表被映射的默认模板工作,所以我用来创建#partial类&[MetadataType(typeof运算)以应用数据注解,,但是当我开始使用的DbContext代码生成模板来映射数据库表,我发现,它会在我的示范区创建.TT文件夹都被我发现,我可以直接申请数据注解到的.cs类本身,而不需要创建在objectcontext情况下的部分类.目前数据注释工作正常,但我的方法会导致我不知道的问题,我应该创建部分类,因为我曾经使用Objectcontext吗?BR

entity-framework objectcontext asp.net-mvc-3 dbcontext

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

是否有Entity Framework 5.0的ObjectContext生成器?

我正在寻找Entity Framework 5.0的ObjectContext生成器,而不是DbContext生成器.WCF数据服务需要ObjectContext,不能使用DbContext.如果我想将EF5与DataService一起使用,我必须提供一个ObjectContext.Visual Studio 2010中的ObjectContext生成器和联机用于"ADO"和"EF 4.x"."EF 5.x"的生成器所有产品DbContext对象.

entity-framework generator objectcontext

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

将在ObjectContext.Add中使用Parallel.ForEach

我正在使用Entity Framework和通用存储库模式.我使用以下方法添加对象.

public int Add<TEntity>(TEntity entity) where TEntity : class
{
   DataContext.AddObject(GetEntityName<TEntity>(), entity);
   return SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

我也在考虑扩展它以支持多个实体.

public int Add<TEntity>(TEntity[] collection) where TEntity : class
{
   foreach (TEntity item in collection)
   {
     DataContext.AddObject(GetEntityName<TEntity>(), item);
   }

   return SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

在上述场景中使用Parallel.ForEach而不是foreach循环会有实际好处吗?

另外因为我没有SaveChanges()在循环结束之前调用,如果有让我们说主键违规,它会被抛入循环内部还是SaveChanges()被调用时?我可以回滚更改吗?

entity-framework-4 objectcontext parallel.foreach

2
推荐指数
1
解决办法
1984
查看次数

ASP.NET中的每个请求的实体框架对象上下文?

每个请求使用一个ObjectContext被认为是一种好习惯吗?我读过这些对象应该是短暂的并且实例化的成本并不高,但这是否会使每个请求对其中一个具有吸引力呢?如果是,是否有任何模式正确实现这一点?

c# asp.net web-applications objectcontext entity-framework-4.1

2
推荐指数
1
解决办法
3534
查看次数

c#EF DbContext - 从字符串动态生成对象

我想创建一个工厂类来返回DbContext表名将作为字符串传递的对象.数据库中有100多个表,每个表都有不同的结构/模式.

我们的想法是通过tableNamestring在将在EF返回对象,我们可以选择/更新这些记录的方法.我在一些文章中发现了这段代码,但是如何使用它却有些困惑:

public ObjectContext Context(EntityObject entity)
{
        var relationshipManager = ((IEntityWithRelationships)entity).RelationshipManager;
        var wrappedOwnerProperty = relationshipManager.GetType().GetProperty("WrappedOwner", BindingFlags.Instance | BindingFlags.NonPublic);
        var wrappedOwner = wrappedOwnerProperty.GetValue(relationshipManager);
        var contextProperty = wrappedOwner.GetType().GetProperty("Context");
        return (ObjectContext)contextProperty.GetValue(wrappedOwner);
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是我需要的.还有什么我应该通过在EntityObject entity和我应该在哪里打发tableName

如果有任何其他方法可以实现相同的目的,请告诉我.

c# entity-framework objectcontext

2
推荐指数
1
解决办法
4596
查看次数

EF中的ObjectMaterialize不会在第一级查询中触发

我有一个查询,例如:

Query Syntax 1 - Does not fire the somehandler;
var results = (from I in db.mytable
              select new myObject() {
                        column1 = i.Prop1
              }).ToList();

Query Syntax 2 - Does fires the somehandler event;
var results = (from I in db.mytable
               select I).toList();
Run Code Online (Sandbox Code Playgroud)

在我的ContextClass中,我有这样的事情:

((IOjectContextAdapter)this).ObjectContext.ObjectMaterialized +=  somehandler;
Run Code Online (Sandbox Code Playgroud)

我看到的唯一区别是第一个查询从选择结果中构建一个新对象.

知道为什么活动不会开火吗?

c# linq entity-framework objectcontext

2
推荐指数
1
解决办法
918
查看次数

EF 4:使用POCO时无法理解DetectChanges的问题(没有自我跟踪ObjectContext)

我想知道是否有人可以帮助我?

我在理解为什么需要在我的POCO(非代理)实体上发出DetectChanges时遇到问题.

当然我有这一行来确保不返回代理.

   context.ObjectStateManager.GetObjectStateEntry(order).State
Run Code Online (Sandbox Code Playgroud)

如果我需要检查一个对象的"状态"然后我需要发出一个checkchChanges但是为什么我需要检查一个对象的状态?

基本上我将我的POCO实体发送到一个方法,该方法将数据保存到新的ObjectContext(我在每个方法上创建并销毁ObjectContext)

因此,我在理解为什么需要使用ObjectContext跟踪或了解更改时遇到问题?

是因为如果不知道是否会被保存?

也许我很想知道,但似乎如果我使用现有的ObjectContext(我不是每次创建和销毁),确保ObjectContext知道将是有益的,否则不会?

因此,在1方法中,我通过创建新的datacontext来更新对象,将其保存到db并销毁ObjectContext.因此我不使用2种方法,1种方法发送更新或新记录,然后使用另一种方法进行保存.

我真的很感激为什么需要它的快速解释?

提前致谢

entity-framework poco entity-framework-4 objectcontext

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

EntityDataSource中的ContextCreating方法无法将实体转换为ObjectContext

使用EntityFramework,我在App_Code\DAL中创建了一个EntityDataModel(.edmx文件).在向导中,我将实体命名为"DLGDBEntities".我EntityDataSource在.aspx中有一些s,我将OnContextCreating属性设置为'UseSurveyContext',如下所示:

protected void UseSurveyContext(object sender, EntityDataSourceContextCreatingEventArgs e)
{
   e.Context = surveyContext;
}
Run Code Online (Sandbox Code Playgroud)

surveyContext的设置代码如下:

DLGDBEntities surveyContext;
Run Code Online (Sandbox Code Playgroud)

并在Page_Load中:

surveyContext = new DLGDBEntities();
Run Code Online (Sandbox Code Playgroud)

以上所有内容看起来与我在每个教程中看到的代码相同(例如:http://msdn.microsoft.com/en-us/library/cc668193.aspx#1),我可以发誓我已经拥有了它工作.

然而,现在,我收到错误: Cannot implicitly convert type 'DAL.DLGDBEntities' to 'System.Data.Objects.ObjectContext'

我做错了什么,为什么之前有效呢?

c# entity-framework objectcontext

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

EF不会在SaveChanges上更新相关实体

我正在使用延迟加载将我的EF6 MVC项目从ObjectContext迁移到DbContext.

使用ObjectContext,我可以执行以下操作:

// Create a new user:
 User u = new User();
 u.LineManagerID = 42;   // Set foreign key

 db.Users.Add(u);
 db.SaveChanges();

// get property of related entity as set above by foreign key 
 User lm = u.LineManager;
Run Code Online (Sandbox Code Playgroud)

使用DbContext,u.LineManager即使新实体被正确保存也是null,我怀疑如果我再次调用数据库就可以了.

延迟加载和动态代理都已启用.

为什么新实体不能正确刷新?

请帮忙!我可以看到这种迁移比我想象的要困难得多......!

编辑 - 我应该补充说我正在使用db-first代码生成

c# asp.net-mvc entity-framework objectcontext dbcontext

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

用实体框架进行sql查询

如果我使用实体框架进行连接,我怎样才能在sql语言中使用sql查询?我从这篇文章中了解到,ObjectContext.ExecuteStoreQuery无济于事,因为它只适用于某些查询(不是1:1到sql语言).

提到的另一个选项是使用ObjectContext.Connection并从那里编写"经典"ADO.NET代码,但我无法弄清楚如何.

有人可以写一个非常简单的代码示例如何执行简单的查询,如

select MAX(customer_id) from Customers 
Run Code Online (Sandbox Code Playgroud)

与实体框架?我知道Linq-To-Sql存在,但我更喜欢使用sql语言,它看起来更简单,我对它更熟悉.

sql ado.net entity-framework linq-to-sql objectcontext

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