Tag: entity framework core

如何正确使用ValueGeneratedOnUpdate()?

我正在使用EF Core 2.1.0-preview1-final CF方法和MS SQL Server 2014,并希望自动在一列中设置更新时间戳。 我已经使用ValueGeneratedOnAdd而没有任何问题。 当我将新记录插入我的数据库时, InsertDateTimeUtc列具有当前的UTC日期和时间值, UpdateDateTimeUtc列的值为0001-01-01 00:00:00.0000000 ,因为它是必需的列。 这是我的测试模型(实体类)。 public class Person { public string Name { get; set; } public DateTime InsertDateTimeUtc { get; set; } public DateTime UpdateDateTimeUtc { get; set; } public static void OnModelCreating(ModelBuilder modelBuilder) { var entity = modelBuilder.Entity(); entity.Property(p => p.Name) .IsRequired(); entity.Property(p => […]

entity framework7 FromSql存储过程返回值

我试图使用Entity Framework 7中的新FromSql命令返回一个值。如果一切顺利,我的存储过程返回值0,如果发生错误,则返回1。 我们可以使用FromSql和DbSet来做 _dbContext.ExampleEntity.FromSql(‘someSproc’, ‘param’) 你将如何得到标量返回值0或1?

ASP.NET Core错误:实施忘记密码时出现无效令牌错误

在VS2017 ver 15.3.3具有Individual User Accounts模式的ASP.NET MVC Core 1.1.1应用程序中,我正在实现Forgot Passwordfunction。 该应用正确地使用生成的链接发送电子邮件。 我可以打开我的电子邮件,可以看到生成的链接如下。 链接正确显示ResetPassWord.cshtml视图。 但是当我输入所需的用户名,密码,确认密码信息并单击“提交”按钮时,我收到Invalid Token错误。 问题 :如何解决问题? 注意 : 答:如果我已登录并希望将密码重置为其他内容,则PasswordResetfunction可以正常工作。 B.不确定它是否相关:我没有使用电子邮件作为用户名。 相反,我改变了AccountCountroller的Email属性 [Required] [EmailAddress] public string Email { get; set; } 至 [Required] public string UserName { get; set; } 等等,并在ApplicationUser.cs扩展了用户属性,如下所示: ApplicationUser.cs // Add profile data for application users by adding properties to the ApplicationUser class […]

使用Entity Framework Core从Newtonsoft JsonSerializer自我引用循环

我遇到了错误: JsonSerializationException:为类型为“Project.Models.Subject”的属性“Subject”检测到自引用循环。 路径’数据[0]。总计’。 当我使用由IEnumerable模型填充的dataGrid加载View时,会发生这种情况。 Grid是一个绑定到View模型的DevExtreme DataGrid,如下所示: @(Html.DevExtreme().DataGrid() .DataSource(Model) .Paging(paging => { paging.Enabled(true); paging.PageIndex(0); paging.PageSize(20); }) .Columns(columns => { columns.Add().DataField(“SubjectId”); … other fields }) ) 这是从Controller中填充的,该控制器使用此function从存储库中提取数据: public async Task<IEnumerable> GetSubjectsAsync() { return await _context.Subject.ToListAsync(); } Subject表与Totals具有1:1的关系,Totals具有对Subject的外键引用。 项目中的模型看起来像这样(从Scaffold-DbContext生成): public partial class Subject { public Guid SubjectId { get; set; } public virtual Totals Totals { get; set; […]

EFCore Linq然后将两个外键包含在同一个表中

有谁看到我做错了什么? ProjectActivityTasks具有UnitOfMeasureId和ProjectActivityTaskTypeId 。 按照它的编写方式,它认为UnitOfMeasure转到ProjectActivityTaskType 。 在ThenInclude的UnitOfMeasure上ThenInclude了 ProjectActivityTaskType不包含UnitOfMeasure的定义 哪个是对的。 UnitOfMeasure转到ProjectActivityTasks 。 我正在引用此页面但它似乎没有这样工作: https : //docs.microsoft.com/en-us/ef/core/querying/related-data var qry = await _projectActivityRepository.GetAll() .Include(x => x.ProjectActivityVehicles) .ThenInclude(x => x.Vehicle) .Include(x => x.ProjectActivityTasks) .ThenInclude(x => x.ProjectActivityTaskType) .ThenInclude(x => x.UnitOfMeasure) .Where(x => x.Id == Id && x.TenantId == (int)AbpSession.TenantId) .FirstOrDefaultAsync();

在实体Framework Core中执行存储过程而不期望映射到dbset

我正在研究.NET CORE,Entity Framework核心。 我有需要从.NET类执行的存储过程。 我的存储过程需要多个’Context’,我不知道如何处理这个,虽然我有dataView,这是最后的例外。 我是否可以使用我的dataView而不是context.dataModel类,当前实现(Context.Claims.FromSql) 数据视图 public class ClaimDataView { public Guid ClaimId { get; set; } public int IdNum { get; set; } public string Value { get; set; } public DateTime ExpirationDate { get; set; } public ClaimAttributionActions Action { get; set; } public bool ActiveStateForRole { get; set; } } 存储过程调用 […]

entity framework核心仍然采用旧列

我最近从表中删除了一个ConversationId列。 当我开始调试我的服务并尝试保存时,我收到一个错误: 列名称’ConversationId’无效。 码: public class AstootContext : DbContext { public AstootContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { } public DbSet ServiceRequests { get; set; } } 我的实体看起来像这样: public class ServiceRequest { public int Id { get; set; } public int SenderUserId { get; set; } public int PriceTypeId { […]

EF Core 2.0.0查询filter正在缓存TenantId(针对2.0.1+进行了更新)

我正在构建一个多租户应用程序,并且遇到了我认为EF Core在请求中缓存租户ID的困难。 唯一似乎有帮助的是在我登录和退出租户时不断重建应用程序。 我认为它可能与IHttpContextAccessor实例是单例有关,但它不能作为范围,当我在没有重建的情况下登录和退出时,我可以看到租户的名称在页面顶部发生变化,所以它不是问题。 我能想到的另一件事是EF Core正在进行某种查询缓存。 我不确定为什么它会考虑它是一个范围的实例,它应该在每个请求上重建,除非我错了,我可能是。 我希望它的行为类似于作用域实例,因此我可以在模型构建时在每个实例上简单地注入租户ID。 如果有人能指出我正确的方向,我真的很感激。 这是我目前的代码: TenantProvider.cs public sealed class TenantProvider : ITenantProvider { private readonly IHttpContextAccessor _accessor; public TenantProvider( IHttpContextAccessor accessor) { _accessor = accessor; } public int GetId() { return _accessor.HttpContext.User.GetTenantId(); } } …注入TenantEntityConfigurationBase.cs ,我用它来设置全局查询filter。 internal abstract class TenantEntityConfigurationBase : EntityConfigurationBase where TEntity : TenantEntityBase where TKey : IEquatable […]

entity framework核心数量没有最佳性能

我需要通过某个filter获取记录数量。 从理论上讲这条指令: _dbContext.People.Count (w => w.Type == 1); 它应该生成SQL,如: Select count (*) from People Where Type = 1 但是,生成的SQL是: Select Id, Name, Type, DateCreated, DateLastUpdate, Address from People Where Type = 1 生成的查询在具有许多记录的数据库中运行需要更长的时间。 我需要生成第一个查询。 如果我这样做: _dbContext.People.Count (); entity framework生成以下查询: Select count (*) from People ..运行得非常快。 如何生成第二个查询将搜索条件传递给计数?

如何让EF Core数据库首次使用枚举?

我正在使用EF Core和数据库优先方法,使用“Scaffold-DbContext”命令生成我的DbContext / Entities。 如何指示Scaffold-DbContext某个表中的某个字段应该生成使用Enum而不仅仅是int的代码? 以下是您在常规EF中的使用方法: https : //www.devu.com/cs-asp/lesson-69-mapping-enum-types-entity-properties-framework-designer/ 例 此枚举已在代码中定义: public enum StateEnum { Ok = 1, Fail = 2 } 这就是Scaffold-DbContext给我的 public partial class Foo { public int Id { get; set; } public int State { get; set; } } 这就是我想要它创建的: public partial class Foo { public int Id { get; set; […]