Tag: entity framework

EF。 连接没有关闭。 连接的当前状态是连接

我有jwt auth: var messageHandlers = new JwtMessageHandler(_serviceProvider); app.UseJwtBearerAuthentication(new JwtBearerOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, Events = new JwtBearerEvents { OnMessageReceived = messageHandlers.OnMessageReceived, }, TokenValidationParameters = tokenValidationParameters }); JwtMessageHandler是我的自定义处理程序。 在处理程序中,我必须对数据库进行一些查询,因此我传递ServiceProvider并解析我的用户服务: public class JwtMessageHandler { private IUserService _userService; public async Task OnMessageReceived(MessageReceivedContext arg) { //parsing header, get claims from token … _userService = (IUserService)arg.HttpContext.RequestServices.GetService(typeof(IUserService)); var […]

是否有一种简单的方法可以使EntityFramework使用SQL默认值?

例如,我的大多数实体都有DateCreated和DateModified字段。 这些默认设置在SQL Server中设置为GetUtcDate()。 如果我尝试创建一个实体并且不设置这些值,我会得到一个exception,说它无法运行SQL插入,因为日期值超出范围。 有意义,因为C#默认日期是1/1/0001,而SQL Server的最小日期是1/1/1753。 那么有没有办法告诉EF要么使用SQL Server默认值,要么尝试插入尚未设置的列?

一个视图中的MVC多个模型

我想在一个视图中访问多个模型。 我有DAL文件夹和DbContext。 class CvContext : DbContext { public CvContext() : base(“CvContext”) { } public DbSet Links { get; set; } public DbSet Abouts { get; set; } public DbSet Portfolios { get; set; } public DbSet Skills { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); } } 和HomeController public class HomeController : […]

如何排序entity framework返回的内部列表?

如何对entity framework返回的对象的内部集合进行排序? public class X { public string Field {get; set;} public EntityCollection Ys {get; set;} } public class Y { public string Field {get; set;} } from x in entities.Xs orderby x.Field select x 有没有办法修改这个LINQ查询以返回X对象,还有Y对象排序? 或者我必须在它返回时手动对Y列表进行排序? 编辑: 此代码必须返回X类型对象的集合,匿名键入不符合当前项目的要求。

如何在Linq查询中将DateTime转换为String?

我必须以MMM dd,YYYY格式显示日期。 var performancereviews = from pr in db.PerformanceReviews .Include(a => a.ReviewedByEmployee) select new PerformanceReviewsDTO { ReviewDate=pr.ReviewDate.ToString(“MMM dd,yyyy”), EmployeeName=pr.ReviewedByEmployee.Name, JobTitle=pr.ReviewedByEmployee.JobTitle, ReviewerComments=pr.CommentsByReviewer, EmployeeComments=pr.CommentsByEmployee }; 这是我得到的错误消息 ExceptionMessage:LINQ to Entities无法识别方法’System.String ToString(System.String)’方法,并且此方法无法转换为商店表达式。 ExceptionType:System.NotSupportedException 当我在pr.ReviewDate上应用ToString ,我得到错误。 请通过适当的解决方案指导我如何实现这一目标。 我知道在正常的C#编码中有几种选择,但在Linq我们怎么做。

Ef core fluent api设置所有列类型的接口

不幸的是,ef核心不支持TPC模式,但我们需要这种行为。 我写了一个名为IBase的接口,每个实体都实现了这个接口: public interface IBase { Guid Id { get; set; } [Column(TypeName = “datetime2”)] DateTime CreateDate { get; set; } [Required] [StringLength(255)] string CreateUser { get; set; } bool Deleted { get; set; } } 我想摆脱Annotations以使用Fluent API配置。 但是我有大约20个不同的实体和7个Base-Values,我不想一遍又一遍地做出相同的配置: modelBuilder.Entity() .Property(e => e.CreateDate) .HasColumnType(“datetime2(2)”) .IsRequired(); 任何想法如何为实施IBase的所有实体配置一次Base-Property?

SQLite的entity frameworkMigrationSqlGenerator

是否有一个MigrationSqlGenerator for SQLite用于entity framework? 我只发现一个来自devart的商业广告。 找不到提供程序’System.Data.SQLite’的MigrationSqlGenerator。 使用目标迁移配置类中的SetSqlGenerator方法注册其他SQL生成器。 这就是我所做的: http : //msdn.microsoft.com/en-gb/data/jj591621

找不到entity frameworkADO.NET Sql.Data.Client提供程序

我有一个问题类似于没有entity framework提供程序为ADO.NET提供程序找到的具有不变名称’System.Data.SqlClient’的问题 ,该错误有以下消息: “具有不变名称’System.Data.SqlClient’的ADO.NET提供程序未在机器或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部exception。” 正如相关问题的答案所示,我已经通过软件包管理器控制台重新安装了entity framework(EF6),但错误仍然存​​在。 我还检查了我的项目中引用了EntityFramework.SqlServer.dll。 这是存储在App.config中的连接字符串: 我有另一个项目,我使用EntityFramework创建完全相同的实体和上下文,它工作正常,这使得这更令人费解。 尝试执行此行时会显示错误: DesignModel designContext = new DesignModel(); designContext.MoPerfIDs.Load(); 其中DesignModel是inheritanceDbContext的类的名称。 这是完整的App.config: 任何帮助将不胜感激。 提前致谢。

处理entity framework中的例外4

我需要一种方法来区分使用entity frameworkLINQ的SQLexception,例如,当我从DbUpdateException获得的是大量嵌套的内部exception和无用的长错误消息时,如何区分外键约束违规或唯一约束违规? 是否存在任何较低级别的exception,我可以执行类似“Catch FKException”的操作; 捕获“uniqueException”或类似的东西。

使用存储库模式时,如何恢复数据库生成的ID?

在我的解决方案中,我有一个Domain项目和一个DataAccess项目。 My Domain项目包含各种存储库的域对象和接口,以及包含所有存储库的UnitOfWork的接口。 我的DataAccess项目包含所有这些接口的实现以及我的Domain对象的EF版本。 因此,如果我有一个名为Person的类,并且我想向DB添加一个Person ,它将如下所示: unitOfWork.People.Add(person); unitOfWork.Complete(); 内部unitOfWork.People.Add(person)我使用AutoMapper将我的域Person对象映射到我的EF Person对象。 然后我将EF Person对象添加到EF DbContext对象。 public void Add(Person person) { DataAccess.Entities.Person dbPerson = Mapper.Map(person); dbContext.People.Add(dbPerson); } Complete()函数只包含SaveChanges()。 public int Complete() { dbContext.SaveChanges(); } 通常,EF在插入后更新插入对象的DB生成的ID。 但在这种情况下,EF对我的Domain Person对象一无所知。 由于我的Domain Person对象没有它的ID,我无法更新数据库条目或从数据库中重新获取它。 我能想到的唯一选择是在服务器上生成一个guid并将其用作ID。 但这会以两个ID的forms创建冗余。 它也不是非常用户友好,因为用户将在搜索字段中引用此ID。 记住ID 135比记住guid简单得多。 是否有某种方法可以让dbContext直接更新域对象的ID,或者让ID通过层向上冒泡?