比较Entity Framework 5中Any()与Count()生成的查询的性能
在我的项目中,我使用实体框架4.4.0.0,并且有以下困境.我必须检查用户是否已激活.我的查询看起来像: 任何() _context.Users.Any(u => u.Id == userId && u.IsActivated); 生成的SQL是: SELECT CASE WHEN ( EXISTS (SELECT 1 AS [C1] FROM [dbo].[Users] AS [Extent1] WHERE ( [Extent1].[Id] = @p__linq__0 ) AND ( [Extent1].[IsActivated] = 1 )) ) THEN cast(1 AS BIT) WHEN ( NOT EXISTS (SELECT 1 AS [C1]
2 2023-05-24
编程技术问答社区
为什么DbContext.SaveChanges在调试模式下会慢10倍?
有人可以解释 为什么dbcontext.savechanges在调试模式下运行〜10x比生产模式慢? 有什么办法可以加快速度? 在调试模式下,如果我启动项目而无需调试,我的网页需要加载116秒,而15秒. 我已经设置了跟踪语句,并确定了116秒中的〜100秒在我的dbcontext.savechanges方法中时. . 在同一部分中运行该项目而无需进行7秒钟. 如果您需要更多信息,请在评论中告诉我. 项目设置: ASP.NET网页 VS2012 sqlserver2012 实体框架5.0 附加信息:(如果您需要更多信息,请在评论中知道) SAVECHANGES方法上的SQL查询累计数为20,000 生产连接字符串:数据源= PC-DEV;初始目录= ASPNET-2013-06-04; Integrated Security = true; MultipleActiverSultSetsetsetsetsetsets =
0 2023-05-23
编程技术问答社区
在实体框架中设置取值大小
我正在将ado.net代码转换为使用EF.在我的ado.net代码中,我设置了dataReader.FetchSize = command.RowSize * 1000,这大大提高了默认提取大小的性能. 当我将代码转换为EF时,性能与ADO.NET代码相当,在该代码中我没有指定Fetch大小,即,对于大记录而言,它非常慢. 我可以指定用于检索EF中的记录的摘要? 解决方案 使用实体框架时,您可以在注册表或.NET配置文件中设置odp.net fetchsize.这将在您的所有ODP.NET实例(如果是注册表)或您的应用程序(如果是App/web.config)中进行标准化. http://docs.oracle.com/CD/E48297_01/doc/win.121/e41125/futsconfig.htm Christian Shay oracle 其他解决方案 我遇到了一个类似的问题,但不想更改整体提取大小,而是想更改每个查询的提取.
0 2023-05-14
编程技术问答社区
用Entity Framework 5与Oracle 11g对话,为每个会话执行SQL Alter命令
我需要在每个数据库会话开始时执行一些SQL命令.我正在通过DBContext与Oracle 11G数据库进行交谈. 我想执行: ALTER SESSION SET NLS_COMP=ANSI; ALTER SESSION SET NLS_SORT=BINARY_CI; 在会话创建开始时以获取案例不敏感的搜索. 我怎么能做到这一点? 我已经将命令放入DBContext的构造函数中,但是只有简单的单元测试,并且确实可以工作.但是不确定这是正确的事情 public partial class Entities : DbContext { public Entities() : base("name=Entities") { this.Database.ExecuteSqlCommand("ALTER SESSION SET NLS_COMP=ANSI"); this.Database.ExecuteS
0 2023-05-14
编程技术问答社区
EF5 Fluent API一对一,无导航器
在Fluent API中,EF5可能是通过联接表配置一对一关系的(如果是个好主意,对此不确定)?我不需要从左到右,从左到右导航. 我想做的是类似的 Table A1 TableA1_ID //Key RankValue //int Table A1_Rank (join table) TableA1_ID RankId Table Rank RankId Value poco public class A1 { public int Id { get; set; } public decimal RankValue { get; set; } public virtual Rank Rank { get; set; } } public class Rank { public int RankId { get; set; } public decimal Value { get, set; } publ
0 2023-05-08
编程技术问答社区
EF5一对一无导航
我正在尝试建立一对一的关系,而导航属性仅在一侧(mvc4,ef5,code首先). public class User { public int UserId { get; set; } //PK public int RankId { get; set; } //FK public virtual Rank { get; set; } //Navigation } public class Rank { public int RankId { get; set; } } 配置: public class RankConfiguration : EntityTypeConfiguration { public RankConfiguration() { HasKey(e => e.RankId); Property(e => e.RankId) .HasDatabaseGe
0 2023-05-08
编程技术问答社区
在Entity Framework 5 Code First中,一对一和一对多的关系都有。
我尝试了整天的工作.我学到了很多有关EF流利的API的知识(例如这是一篇很棒的文章),但是我没有成功. 我有三个实体: public class Address { [Key] public virtual int AddressId { get; set; } public virtual string AddressString { get; set; } } public class User { [Key] public virtual int UserId { get; set; } public virtual ICollection Addresses { get; set; } } public class House { [Key] public virtual int HouseId { get; set; } public virtual Address Address { get;
0 2023-05-08
编程技术问答社区
如何先定义嵌套的识别关系实体框架代码
目前,我在简单的测试应用程序中首先使用EF5代码来测试各种功能.我已经定义了两个代表一对多链接的实体之间的"识别关系".在这里,我定义了一个具有许多儿童照片实体的化学; public class PhotoCollection { public int Id { get; set; } public virtual ISet Photos { get; private set; } public PhotoCollection() { Photos = new HashSet(); } } public class Photo { [Key, ForeignKey("Parent"), Column(Order = 1)] public int PhotoCollectionId { get; set; } [Key, Column(Order = 2)] pu
2 2023-05-08
编程技术问答社区
Wcf服务查询中的内部查询抛出了'不支持异常'。
我有一个具有多种关系的课程,我在正确过滤了使用WCF数据服务的查询的结果时遇到问题(通过 DataServiceQuery 类).该服务公开了实体框架5模型. 例如: from device in devices select new { DeviceName = device.Name, TestUsers = device .Allocations .Where(allocation => allocation.User == "testUser") } 这给了我一个NotSupportedException,在运行时: [NotSupportedException: Constructing or initializing instances of the type f__AnonymousType0`4[System.String,System.String,System.String,System.Co
2 2023-05-07
编程技术问答社区
在Entity Framework DBContext中使用OData选项时,为什么会出现客户端结果缺失?
ODATA和实体框架应该很好地工作,因为ODATA选项将传递给EF DB上下文以过滤查询 - 即.仅返回从服务器请求的记录数,因为不夸大有效载荷而不是所有记录,然后过滤. 给定以下URL路径: /api/Users?$top=10&$skip=10 给定以下控制器操作: [Queryable(AllowedQueryOptions = AllowedQueryOptions.All)] public IEnumerable Get(ODataQueryOptions options) { var dbContext = new ATMS.DAL.AtmsContext(); //var ret = options.ApplyTo(dbContext.USERS).Cast().ToArray(); // returns 10 rows but client se
4 2023-05-07
编程技术问答社区
实体框架5线程敏捷性
抛出了EntityFramework代码深处的NullReferenceException(EF Bug?),但是我的问题是关于Entity Framework(V5)和WebAPI asynchronions Controller Action. repro在这里很难重新创建,但是本质上的代码可以执行以下操作: public class AController : ApiController { private IUow _uow; //among other things, a DbContext // DI ctor public AController(IUow uow) { _uow = uow; } [HttpPost] public async Task Post(Model model) { Entity e = _u
对一个或多个实体的验证失败。更多细节请参见'实体验证错误'属性。代码第一
我得到此错误: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. 当我尝试使用Update-Database命令中的数据库更新数据库时. 如何将线路写入Visual Studio中的输出窗口? 我尝试了: try { context.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the follo
2 2023-04-30
编程技术问答社区
NuGet软件包管理器控制台默认项目下拉菜单为空
我最近从MSDN升级到Visual Studio 2012 RTM Ultimate.我正在使用EF代码的第一迁移来在我的应用中构建我的数据库,最近我添加了一个新实体,并希望为其施加迁移. 要这样做,您需要在VS中打开包装管理控制台窗口,然后键入add-migration "some name here".自上次更新以来,这将为您的数据库进行任何更改. 问题 这个问题没有发生在VS 2012 RC 上 尽管我的解决方案中有几个项目,但我遇到的问题是包装管理器控制台中的"默认项目"下拉列表并未填充.当我仅键入上面命令时,使用的默认项目是错误的项目(我的迁移在另一个项目中).这样做时,我会收到以下错误: 在汇编" Projecta"中找不到迁移配置类型. (在Visual Studio中,您可以使用来自Package Manager Console的启用移民命令来添加迁移配置). 在 我尝试过的 我尝试将正确的项目(ProjectB)设置为启动项目,只是
当用Ninject绑定通用接口到存储库时,得到 "MissingMethodException: 当用Ninject将通用接口绑定到存储库时,得到 "MissMethodException: Cannot create an instance of an interface"。
遵循指南在这里 ,但不是试图使用ninject的结构. 它将"丢失的methodexception:无法创建接口的实例"错误,每当我尝试将IRepository注入action方法中的参数时. 更新:还没有找到Bootstrapper.cs,我使用了mvc3 ninject nuget软件包. public ActionResult Index(IRepository repo) { return View(); } ninjectwebcommon.cs private static void RegisterServices(IKernel kernel) { string Cname = "VeraDB"; IDbContext context = new VeraConte
0 2023-04-23
编程技术问答社区
获取 'Context 是不可构造的。添加一个默认的构造函数或者提供一个IDbContextFactory的实现。"
我尝试使用代码第一次迁移时会遇到此错误. 我的上下文具有带有连接名称的构造函数. public class VeraContext : DbContext, IDbContext { public VeraContext(string NameOrConnectionStringName = "VeraDB") : base(NameOrConnectionStringName) { } public IDbSet Users { get; set; } public IDbSet Products { get; set; } public IDbSet IntCats { get; set; } } 该连接名称在项目运行时注入了Ninject,我也将其指定为上述代码中的默认值,但这无济于事. kernel.Bind() .
ActionFilterAttribute ninject injection-DbContext已经被处置了
我有我的项目,它使用通常的存储库模式与服务和工作单位(所有人都从ninjectionmodule注入依赖关系),但是我正在尝试从ActionFilterAttribute中访问服务来注入一些信息(从db)在我显示的页面的布局中,我不需要弄乱每个控制器上的所有操作. 当我在一个屏幕上保存到DB并移至下一个,然后返回上一个(使用标准@Url.Action):Index操作的ActionFilterAttribute触发,但呼叫调用到服务和相应的存储库(在属性中),因为DbContext has been disposed. 在通过财产注入注入服务时,访问服务有任何问题,因此,从ActionFilterAttribute中访问DbContext?我想记下我在属性中使用属性注入该服务的属性注入,因为构造函数会根据操作方法的签名接收2个任意的参数,因此我唯一的选择是通过属性注入. . 让我知道您是否需要一些代码,我将更新问题. 解决方案 我在以下问题中找到了解决我问题的
寻找一个像InRequestScope那样的Ninject作用域
在我的服务层上,我在构造函数中注入了UnitOfWork和2个存储库.工作和存储库的单位具有一个DbContext的实例,我想在两个之间共享.我该如何用ninject做到这一点?应该考虑哪个范围? 我是不在Web应用程序中,所以我不能使用InRequestScope. 我尝试做类似的事情...但是我正在使用di,但是我需要我的uow为Dispose d并这样创建. using (IUnitOfWork uow = new UnitOfWorkFactory.Create()) { _testARepository.Insert(a); _testBRepository.Insert(b); uow.SaveChanges(); } 编辑:我只想确保我理解……看完说: A类是服务层类 B类是一个工作单位,它将界面(IContextFactory)纳入参数 c类是一个存储库,它将接口(icontextFactory)纳入参数
2 2023-04-23
编程技术问答社区
在ObjectStateManager中已经存在一个具有相同键的对象。ObjectStateManager不能跟踪具有相同键的多个对象
在试图将实体更新到数据库中时,将带有通用存储库模式的EF5和NInight进行依赖性限制,并陷入问题. 我在dbcontextrepository.cs中的更新是: public override void Update(T entity) { if (entity == null) throw new ArgumentException("Cannot add a null entity."); var entry = _context.Entry(entity); if (entry.State == EntityState.Detached) { _context.Set().Attach(entity); entry.State = EntityState.Modified; } } 从我的squildservice.cs回到我的存储库: public
0 2023-04-23
编程技术问答社区