Tag: objectcontext

dbcontext和objectcontext中的NULL处理

我有这个简单的LINQ查询 from e in Employees where e.DesignationID !=558 select e 这里的DesignationID是一个可以为空的字段: 在objectcontext ,查询被转换为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE 558 [Extent1].[DesignationID] 虽然dbcontext的相同查询被翻译为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE NOT ((558 = […]

编译查询没有隐式引用转换为ObjectContext

我正在创建一个委托来检索数据库中的所有专辑记录。 我在另一个项目中使用了相同的方法,但由于某种原因我这次收到错误。 我错过了一步吗? 我不确定为什么会出现这个错误。 码 public static readonly Func<CodySolutionEntities, IQueryable> SelectAlbums = CompiledQuery.Compile<CodySolutionEntities, IQueryable>( query => from q in query.Albums.Include(“Photo”) select q); 错误 错误1类型’CodyData.Diagram.CodySolutionEntities’不能parameter ‘TArg0’ in the generic type or method ‘System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression<System.Func>)’. There is no implicit reference conversion from ‘CodyData.Diagram.CodySolutionEntities’ to ‘System.Data.Objects.ObjectContext’. C:\Users\Cody\Documents\CMBS\CodySolution\CodyData\Delegates\PhotoDelegates.cs 13 13 CodyData用作类型parameter ‘TArg0’ in the generic type or method ‘System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression<System.Func>)’. There […]

EF6不支持上下文类型’System.Data.Entity.Core.Objects.ObjectContext’

我使用带有ADO.NET实体数据模型(EF6)的Visual Studio 2013创建了一个新项目。 现在我必须使用一些动态数据function(比如访问MetaTable对象),所以我添加了这段代码: MetaModel model = new MetaModel(); model.RegisterContext(() => { return ((System.Data.Entity.Infrastructure.IObjectContextAdapter)new KiwiJuiceEntities()).ObjectContext; }, new ContextConfiguration() { ScaffoldAllTables = true }); 但我有这个错误: Type of context ‘System.Data.Entity.Core.Objects.ObjectContext’ is not supported 请注意,项目的参考已更新为EF6(system.data.entity.core)

每个HttpContext只使用一个ObjectContext的C#Entity Framework

在ASP.NET MVC 2中,使用Entity Framework 4,我收到此错误“实体对象不能被IEntityChangeTracker的多个实例引用”。 对SO的搜索表明,可能是因为我有不同的Entity Framework ObjectContext实例,它应该只是每个HttpContext的一个ObjectContext实例。 我有这个代码(在我加入之前写的很久)似乎就是这样 – 每个HttpContext都有一个ObjectContext。 但我经常得到“IEntityChangeTracker”exception,因此它可能无法正常工作: // in ObjectContextManager.cs public const string ConnectionString = “name=MyAppEntities”; public const string ContainerName = “MyAppEntities”; public static ObjectContext GetObjectContext() { ObjectContext objectContext = GetCurrentObjectContext(); if (objectContext == null) // create and store the object context { objectContext = new ObjectContext(ConnectionString, ContainerName); objectContext.ContextOptions.LazyLoadingEnabled = […]

entity framework中的提供者连接字符串

如果您正在使用对象上下文数据模型(使用EDMX文件),则在创建它时,您可能希望在配置文件中指定连接字符串。 遗憾的是,连接字符串不是公共连接字符串,因为它包含一些实体连接所需的东西。 MySql连接示例: 我遇到的问题是此连接字符串包含参数“provider connection string”中提供程序的连接字符串。 出于特定原因,我需要创建一个与实体模型无关的新MySqlConnection。 为了创建MySqlConnection,我需要为它提供mysql连接字符串 – 这是实体模型的提供者连接字符串,我知道我需要的连接字符串始终是实体模型的相同连接字符串。 但是如何获得提供程序连接字符串programmaticaly? 我被困在浏览模型实例但没有成功…… 下列: ModelInstance.Connection.ConnectionString 包含类似“name = TestBotEntities”的内容,甚至不包括整个连接字符串。 所以我尝试过: ConfigurationManager.ConnectionStrings[“MyDbEntities”].ConnectionString 但是那个包含整个实体连接字符串,我只是不知道如何解析它,如何只从它获取提供者连接字符串。

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

我对C#和MVC很新,我一直在创建自己的小博客网站作为测试项目。 虽然大多数事情都在发挥作用,但我在从LINQ查询中选择多个列时遇到了问题。 只有在关于SO的问题上遇到磕磕绊绊之后,才意识到我可以使用生成的实体类作为强类型模型来处理这个问题。 我需要这个,因为我一直在创建一个数据库层(这也是我之前没有用过的东西)并试图通过该层传递匿名类型不起作用。 我理解为什么会这样,所以我很满意我正朝着正确的方向前进。 然而,这种方法似乎给了我另一个问题。 我尝试过一个简单的测试,从我的Categories表中检索2列:CategoryID和Name。 我最初尝试了以下内容: using (MyEntities db = new MyEntities()) { var model = from c in db.Categories select new Category { CategoryID = c.CategoryID, Name = c.Name }; return View(model); } 这给了我在尝试迭代视图中的模型时ObjectContext被处置错误。 在阅读完这个问题后 ,我尝试将return语句移到using块之外,并在模型上调用AsEnumerable(),如下所示: IEnumerable model; using (MyEntities db = new MyEntities()) { model = from c in db.Categories select […]

如何从db刷新ObjectContext缓存?

我们正在从db加载数据: var somethings = Context.SomethingSet.ToList(); 然后有人删除或添加上下文之外的行。 Out上下文仍然有缓存已删除的对象,因为它不知道它们已被删除。 即使我调用Context.SomethingSet.ToList(),我们的上下文仍包含已删除的对象,导航属性也不正确。 从数据库刷新整个集合的最佳方法是什么?

如何将EF Code First DbContext绑定到Asp.Net DataSource?

我创建了以下Context以与Entity Framework Code First一起使用 : public class Context : DbContext { public DbSet Animals { get; set; } } 现在我想在Asp.Net应用程序中使用此Context来使用GridView执行CRUD操作。 我需要创建一个DataSource来进行数据绑定。 我该怎么办? ASP部分看起来像这样:

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

我是entity framework的新手,我刚开始在空闲时间玩它。 我遇到的一个主要问题是如何处理ObjectContexts。 通常优先/推荐这些: 这个 public class DataAccess{ MyDbContext m_Context; public DataAccess(){ m_Context = new MyDbContext(); } public IEnumerable GetSomeItems(){ return m_Context.SomeItems; } public void DeleteSomeItem(SomeItem item){ m_Context.DeleteObject(item); m_Context.SaveChanges(); } } 或这个? public class DataAccess{ public DataAccess(){ } public IEnumerable GetSomeItems(){ MyDbContext context = new DbContext(); return context.SomeItems; } public void DeleteSomeItem(SomeItem item){ MyDbContext context […]

动态转换以避免C#语法错误

请考虑以下数据库表(SQL Server 2005)。 我想在EF(v6,.net 4.5.1)中使用它与翻译function,但搜索后似乎不支持。 CREATE TABLE Foo ( pk INT NOT NULL PRIMARY KEY, Foo VARCHAR(100) ) 使用按惯例映射,该映射将使用C#语法不支持的属性Foo创建类Foo 。 我尝试使用ColumnAttribute : public partial class Foo { [Key] public virtual int pk {get;set;} [Column(“Foo”)] public virtual string Name {get;set;} } 这似乎工作,但我想通过存储过程和MARS使初始页面请求加载数据(并使用通用结构,以便我可以在其他页面上重用它),所以我调用存储过程并循环通过结果集,通过reflection调用ObjectContext.Translate (类似于下面,但这是缩写): var methTranslate = typeof(ObjectContext).GetMethod(“Translate”, new[] { typeof(DbDataReader), typeof(string), typeof(MergeOption) }); foreach (var className […]