Tag: entity framework

如何强制entity framework始终从数据库中获取更新的数据?

我正在使用EntityFramework.Extended库来执行批量更新。 唯一的问题是EF没有跟踪由库执行的批量更新。 所以当我再次查询DbContext时,它不会返回更新的实体。 我发现在查询时使用AsNoTracking()方法会禁用跟踪并从数据库获取新的数据。 但是,由于EF不跟踪使用AsNoTracking()查询的实体,因此我无法对查询的数据执行任何更新。 有没有办法强制EF在跟踪更改时获取最新数据?

在entity framework中select前5名

我有 [Person] PersonID, EmailAddress, FirstName, LastName [OnlineAccount] OnlineAccountID, PersonID, Nickname 每个人都被允许有0- * OnlineAccount。 在使用C#的entity framework中,如何select拥有最多账户的前5位的人?

从entity framework5升级到6

将我们的项目从使用entity framework5升级到entity framework6(尽pipeNuGets更新函数)后,我在我生成的实体类上得到以下错误: 错误1名称空间“System.Data”中不存在types或名称空间名称“对象” (你是否缺less程序集引用?) 我知道这是因为命名空间已经改变,我可以通过改变我的导入来手动修复错误: using System.Data.Objects; 并using System.Data.Objects.DataClasses; 要: using System.Data.Entity.Core.Objects; 然而,该文件生成,所以我需要重新应用此修复程序后, Update model from Database每个Update model from Database 。 有没有什么额外的改变,让EF生成没有这个错误的模型。

为什么我的DbContext DbSet为空?

我创build了一个新的entity framework代码第一个应用程序和DbSet(人)返回null。 public class Person { public int Id { get; set; } public string Name { get; set; } } public class Repository : DbContext { public DbSet<Person> People; } web.config :连接string <connectionStrings> <add name="Repository" connectionString="Data Source=|DataDirectory|Repository.sdf" providerName="System.Data.SqlServerCe.4.0"/> </connectionStrings> 现在当我打电话 Repository _repo = new Repository() _repo.People; _repo.People将为空 我错过了什么? 引用了Microsoft.Data.Entity.Ctp.dll 我已经试过,没有数据库初始值设定项。

插入数据到SQL Server是否locking整个表?

我正在使用entity framework ,并将logging插入到我们的数据库,其中包括blob字段。 blob字段最多可以有5 MB的数据。 在此表中插入logging时,是否locking整个表? 所以,如果你正在查询表中的任何数据,它会阻塞,直到插入完成(我知道有这方面的方法,但我说默认情况下)? 在它导致僵局之前需要多长时间? 这个时间取决于服务器的负载是多less,例如,如果没有太多的负载,会花费更长的时间导致死锁? 有什么方法可以监视并查看在特定时间被locking的内容吗? 如果每个线程都在单个表上进行查询,那么是否会出现阻塞的情况? 那么是不是只有当你有一个查询有一个连接并且在多个表上作用时才会发生死锁? 这是考虑到我的大部分代码只是一堆select语句,而不是长时间运行的事务或类似的东西。

ASP.NET身份 – 不支持每种types的多个对象集

我在我的应用程序中使用ASP.NET身份发生错误。 不支持每种types的多个对象集。 对象集“身份用户”和“用户”都可以包含“推荐Platform.Models.ApplicationUser”types的实例。 我在stackoverflow中看到了一些关于这个错误的问题。 全部在相同types的两个DbSet对象上指示。 但是在我的DbContext中,不存在相同types的DbSets。 FindInync()方法在login期间引发的exception。 if (ModelState.IsValid) var user = await UserManager.FindAsync(model.UserName, model.Password); if (user != null && user.IsConfirmed) { 问题是我没有相同types的两个DbSets。 我的上下文看起来像这样: public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection") { } public System.Data.Entity.DbSet<RecommendationPlatform.Models.ApplicationUser> IdentityUsers { get; set; } } 和 public class RecContext : DbContext { public RecContext() : base("RecConnection") […]

WithOptionalDependent vs WithOptionalPrinciple – Definitive Answer?

我认为这可能有助于得到一个明确的答案何时使用WithOptionalDependent和何时使用WithOptionalPrincipal 。 这两个函数的帮助有点不清楚,我发现自己通过多个Stack Overflow的答案和其他网站上的答案结合的答案,以确信我已经有了正确的方向关系。 以下是MSDN关于WithOptionalDependent所说的内容: 将关系configuration为可选:在关系的另一侧没有导航属性可选。 被configuration的实体types将是依赖项,并且包含一个到委托人的外键。 关系所针对的实体types将是关系中的主体。 以下是关于WithOptionalPrincipal : 将关系configuration为可选:在关系的另一侧没有导航属性可选。 被configuration的实体types将是关系中的主体。 关系所针对的实体types将是依赖关系,并且包含一个外键给主体。 “正在configuration的实体types”这一行总是让我困惑的部分(我假设其他人)。 在这个例子中: class MyEntityA { [Key] public int Id { get; set; } public int BId { get; set; } [ForeignKey("BId")] public MyEntityB B { get; set; } } class MyEntityB { [Key] public int Id { get; set; } } modelBuilder.Entity<MyEntityA>().HasOptional(a […]

EF CodeFirst:参数@objname不明确或声明的@objtype(COLUMN)错误

我有一个名为EducationTypes的表和一个名为EducationTypes的实体,我重命名了一个实体属性,现在我经常得到Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong 。 我该如何解决这个问题? 生成的SQL脚本: EXECUTE sp_rename @objname = N'dbo.EducationTypes.nvarchar', @newname = N'EducationTypeTitle', @objtype = N'COLUMN'

只获得特定的列

我可以让我的EF对象只检索执行的SQL中的特定列吗? 如果我正在执行下面的代码来检索对象,有什么我可以做的只有如果想要的某些列? public IEnumerable<T> GetBy(Expression<Func<T, bool>> exp) { return _ctx.CreateQuery<T>(typeof(T).Name).Where<T>(exp); } 这将生成一个包含所有列的select子句。 但是,如果我有一列包含大量的数据,真正减慢查询,我怎么能让我的对象排除从sql生成的列? 如果我的表有Id(int),Status(int),Data(blob),我怎么能让我的查询成为 select Id, Status from TableName 代替 select Id, Status, Data from TableName 从下面的build议,我的方法是 public IEnumerable<T> GetBy(Expression<Func<T, bool>> exp, Expression<Func<T, T>> columns) { return Table.Where<T>(exp).Select<T, T>(columns); } 而且我这样称呼它 mgr.GetBy(f => f.Id < 10000, n => new {n.Id, n.Status}); 但是,我收到一个编译错误: 不能隐式地将types“AnonymousType#1”转换为“Entities.BatchRequest”

entity framework与存储过程 – 性能测量

我试图build立多lessentity framework超过存储过程。 我希望说服我的老板让我们使用entity framework,以方便开发。 问题是我跑了一个性能testing,看起来EF比存储过程慢大约7倍。 我觉得这很难相信,我想知道如果我错过了什么。 这是一个确定的testing? 我能做些什么来提高EF Test的性能吗? var queries = 10000; // Stored Proc Test Stopwatch spStopwatch = new Stopwatch(); spStopwatch.Start(); for (int i = 0; i < queries; i++ ) { using (var sqlConn = new SlxDbConnection().Connection) { var cmd = new SqlCommand("uspSearchPerformanceTest", sqlConn) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.AddWithValue("@searchText", "gstrader"); sqlConn.Open(); […]