嗨!
我有Entity Framework Core 2.xx ORM解决方案,模型中的所有对象都已创建(数据库创建时间的UTC时间戳-从未更新)和修改字段(在更新实体时始终更新)。
我读了一些关于这个非常常见的问题的建议实现,看起来框架还不能很好地支持它,因为如果不分别为每个实体定义映射,就没有好的方法来实现这一点。
我发现的一个解决方法是定义一个未映射的超类,然后用它手动生成值生成步骤。因为db UTCDatetime是db端功能,所以我还必须手动定义在db中使用utc datetime函数
我想询问有关在EntityFramework Core-V2.1中构建模型的问题。
第一件事-我想实现的目标如下所述:
//我希望此实体存储在数据库中,EntityReference作为自有记录,
//存储在同一个表中。
//将有更多类型EntityReference的属性。
公共部分类CdiEmailEvent
{
公共重写Guid Id{get;set;}
公共实体引用CdiAccountId
公共实体引用CdiAutomationId
}
//EntityReference是指向记录的指针
我的小问题是:我需要从一个表中选择一个字段,通过Id字段进行过滤
在SQL中,我只想这样写:
SELECT Field FROM {Table} WHERE Id = 1
表名是可变的
考虑到表名可能会有所不同,如何使用EF Core 3.1执行这个非常简单的查询
我已经试过了
context.Database.ExecuteSqlCommand($"SELECT TOP 1 Field FROM {table} WHERE Id={id}")
但我无法读取结果(它总是
希望这只是一个简单的版本,但我刚刚升级到EF core的发行版,无法再针对DB运行任何代码
我有两个表,一个客户端表和一个语言表。客户端对语言表有两个引用,一个用于语言,另一个用于家庭语言。
因此,这门语言已经过时了
public ICollection<Client> Clients { get; set; }
在我的OnModelCreating中,我有以下两行代码
modelBuilder.Entity<Client>().HasOne(m => m.Lan
各位,我有下面的表格结构
public class PolicySubStatus
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PolicySubStatusId { get; set; }
public string SubStatusName { get; set; }
public IList<PolicySubStatusReason>
我不熟悉微服务,不熟悉使用masstransit和automatonymous。当前我的状态机在执行时显示不一致。内部代码最初按预期工作,但在第二个事件完成后,控制流不会执行内部代码。这只发生在一个状态机上,其他所有状态机都按预期工作。当我将中间的代码移到初始位置(在初始位置注释代码)时,它可以正常工作。
下面是我的状态机的外观:
InstanceState(x => x.CurrentState);
Event(() => ServiceRequest1Regis
我目前有一个web API
使用存储库中的SQLRAW(…).ToListSync()中的获取一行数据
将此数据返回为Ok(data.ToArray())作为它声明不应使用的任务。此处提出的解决方案类似于:
FromSqlRaw(...).AsNoTracking().AsAsyncEnumerable()
至于控制器,我希望用ActionResult包装响应,以明确设置返回代码。然而,目前似乎不起作用
我应该将解决方案应用于存储库并将结果作为列表使用在我的控制器中还是保持原样?IAsync
目前正在使用EF Core 3.1(虽然很快升级到EF Core 5,所以如果在该版本中变得更容易,我仍然感兴趣)
我正在实现一些基于各种标准限制对实体数据的访问
其中一个过滤器对一种称为“遭遇”的类型进行操作。一次邂逅链接到一个人(通过外键PersonID),但一个人可以有多次邂逅。Person记录具有通过Person.Conferences链接到所有遭遇的导航属性
Conference的查询过滤器是基于Conference上特定属性的值来限制记录的(称之为EnferenceType)。如果我
我正在整合查询,以尽量减少SQL往返次数。
对于Skip-Take的结果,AutoMapper的ProjectTo方法似乎存在问题
作品:
var totalUsers = await _dbContext.UserAccounts.CountAsync(cancellationToken);
var users = await _dbContext.UserAccounts
.Skip(skip).Take(take)
.ProjectTo<UserProjection>
我需要向存储库实体添加一个全局过滤器,即它必须应用于应用程序服务层上访问该实体的任何地方。我的过滤器包含两个条件。虽然添加第一个条件(取决于常数)很容易,并且可以在使用HasQueryFilter的OnModelCreating中应用,但我不知道如何自动应用第二个条件,这取决于当前选择(或默认)的UI语言。在DbContext类中通过构造函数使用依赖项注入。在实现接口的类内设置当前选定的UI语言。在OnModelCreating方法中使用注入的实现,像通常一样使用.HasQueryFilter(
我有.NET核心3.1和.NET核心3.1.8
在命令(将数据写入数据库)中,我多次使用SaveChanges()方法。因此,我决定让所有这些都成为事务性的,并像这样使用TransactionScope():
using (var scope = new TransactionScope())
{
}
这是正确的方法吗?这能正常工作吗
注意:我有一个DbContext它应该是嵌套事务吗?我宁愿不使用TransactionScope,因为它与分布式事务更相关。
在Entity Frameowork Core中,可以使用modelBuilder.query.ToQuery()在上下文中定义所谓的查询。在本文中,它说这是一种替代方法,可以将SQL视图添加到允许内存测试的上下文中。假设我更喜欢将LINQ表达式映射到视图模型,而不是映射到SQL视图,那么ToQuery是否适合在生产工作负载下使用呢?在这种情况下,它总是这样,直到它不适用为止。
我的意思是,我使用了相同的方法,虽然没有在“巨大”流量负载下使用,但它可以轻松处理“小型/中型”流量解决方案。
所以,
我正在尝试在数据库中创建一个树结构,其中的项可以相互引用。我认为这是一个简单的任务,然而,英孚核心决定罢工。我无法让它生成正确的外键,它不断引发异常:
无法确定“Item”类型的导航“Item.Parent”表示的关系。手动配置关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略此属性。
我的课看起来像这样(简化):
公共类项目
{
[关键]
[数据库生成(DatabaseGeneratedOption.I
我试图在公司和应用程序user:IdentityUser之间建立一种一对多的关系。在我的ApplicationUser课程中,我有:
public class ApplicationUser : IdentityUser
{
[ForeignKey("CompanyId")]
public int CompanyId { get; set; }
}
public class Company
{
[Key]
public int CompanyId { ge
下面是一个关于[dbo].[EFMigrationsHistory]表的快速示例:
在应用迁移时,是否有方法指定产品版本?不要更改该列中的值--它由EF在内部使用
如果愿意,可以通过覆盖IHistoryRepository服务添加新列。请参阅开始。我不确定您为什么要设置它,因为这是EF版本。我的想法是使用主版本和次版本控制来指定软件的发布版本。这样可以跟踪实际的CI流。您不应该对该表执行任何操作。仅供EF内部使用。
我正在构建一个查询,如果值不为null,则该查询应该只包含某些字段。为了实现这一点,我只需要将实际查询所需的参数传递到查询中
这是我到目前为止尝试过的,但我收到一个错误,告诉我“SqlException:必须声明标量变量”@registrationStatus”
public PagedResult PaginatedResults(整型页面、字符串搜索词、字符串帐户状态、字符串注册状态)
{
var参数=新列表();
var query=“选择来自餐厅名称!=”;
//搜索词
如果(!Stri
我正在将EF映射到一个遗留数据库,目前必须在遗留数据库中创建视图才能做到这一点
我希望使用新的HasNoKeyexistingFromSql方法将实体映射到应用程序中定义的SQL,而不是修改现有的模式
i、 e
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity(Entity=>
{
entity.HasNoKey();
FromSql(“{SELECT_STATEMENT_FROM_MY_VIEW}”);
或
ToVie
在主ASP.Net Core项目之外的单独项目中设置EF Core会导致添加迁移失败,错误为指定的deps.json[C:\[solution]\[startupproject]\[startupproject].deps.json]不存在
注意:我用[Solution]替换了根文件夹,用[startupproject]替换了启动项目,用[databaseproject]进一步替换了数据库项目
简言之,我有3个项目,如下所述:
ASP.Net核心web api,这是启动项目([startppro
我有一个带有密码属性的用户模型。它使用其Id属性广泛链接到其他实体。但是,每当我使用诸如context.SomeModels.Include(m=>m.User)之类的内容时,我都会从数据库中选择用户的密码属性
这是相当危险的,尤其是我有一些结果缓存。我想知道是否可以全局配置,当用户的密码属性在Linq中“Include”时,我想将其排除在外。否包含不是选择的替代品。使用更晚的密码或将密码移动到与用户共享同一表格的另一个“实体”(也称为表格拆分),以便您可以选择仅在需要时包含它。但是投影(Sel
我有一个Select查询,它对子导航属性执行检查,然后检查另一个引用的属性。第一个子导航属性可以为null,但第二个属性isRequired()如果第一个子导航属性在数据库中不为null,则查询可以正常运行,但如果存在一个或多个不具有该属性引用值的行,则我将获得-
迭代查询结果时发生异常
为了
如何使用可选属性运行查询,并为没有引用的记录返回null
wait\u dbContext.NewsBoard
.AsNoTracking()
.选择(项=>新建新闻响应
{
Id=item.BoardI
我在.NET5.0中使用EntityFramework核心创建API控制器时遇到问题
以下是我正在做的:
我正在使用.NET5.0
已安装Entity Framework核心软件包,所有3个软件包的版本均为5.0
模型和DataContext类已经创建,使用它们之前已经在数据库中创建了一个表
但是,当我右键单击API项目时,单击控制器>选择“使用实体框架执行操作的API控制器”>选择“模型类”和“DataContext类”>输入控制器的名称
我一直在犯错误
运行所选代码生成器时出
我需要在两个查询中加上后面的联合组,但抛出“必须是可还原节点”异常。在以下示例代码中:
public class ForumPost
{
public int ForumPostId { get; set; }
public string Message { get; set; }
public bool Deleted { get; set; }
public int ForumTopicId { get; set; }
public virtual F
我试图查询5条父记录,然后是所有子类别和计数的摘要:
context.Parent
.Take(5)
.GroupJoin(inner: context.Child,
outerKeySelector: parent => parent.Id,
innerKeySelector: child => child.ParentId,
resultSelecto
在将EF1.1升级到EF2.0之后,现在我无法进行迁移
错误:启动项目“QilinSystem.Store.Data.csproj”的目标
框架“.NETStandard”。此框架不适用于执行
并且可能无法解决运行时依赖关系。如果是,请指定一个
请使用--s启动项目选项创建其他项目,然后重试
如何解决此问题?EF Core 2.0预览版1需要Visual Studio 15.3预览版,因此您必须安装它
:
在Visual Studio中访问.NET核心工具需要Visual Studio
2017
我想问一下实体框架核心团队,与EF6相比,他们对查询翻译的范围/复杂性有何期望
我已经广泛使用了EF6,我知道如果你能用LINQ表达它,并且不使用任何不可翻译的函数,EF可能会正确地翻译查询
实体框架的转换最终是否会像这样好,或者是被认为是次要的,比如延迟加载特性
如果是这样,与EF6相比,团队最终的目标是什么
有一个例子似乎表明他们认为分组是一种高级查询类型,但与EF6所能翻译的相比,一个普通的分组是相当普通的
(我在这里提问,正如英孚核心团队在其网站上所说,它正在进行监控,以便了解问题。)我
我正在使用EntityFrameworkCore2.1,我面临着一个奇怪的情况。我有一堆行,其中一些列的值相同,但数据库中的ID不同。当我使用EF-Core检索它们时,只有那些具有不同值的才会绑定到object(例如,我在DB中有17行满足条件,我只得到7个对象)。我的实体正在重写Equals方法,因此我在该方法上添加了一个断点,并验证了EF正在调用它
EF只是基于Equals方法检索“唯一”行,这在我的例子中是一个问题,因为我保留了一个不属于Equals方法的IsActive列。同时,我的实体
我有一个.NET核心web项目,它需要一些用户机密设置(已打开)
我去设置我的本地用户机密,但当我在Package Manager控制台中运行Update Database来创建数据库时,出现以下错误:
访问类“Program”上的IWebHost时出错。在没有应用程序服务提供商的情况下继续。错误:需要配置关键材料
无法创建“ApplicationDbContext”类型的对象。有关设计时支持的不同模式,请参见
我不确定这是否是EF Core在处理用户机密时的限制
我错过什么了吗?我搜索了所有地方,但我找不到任何修改Ef core中OwnedProperties生成的SQL的方法。是否有一种方法可以设置关系,以便ef core将属性作为单个模型进行投影,而不是将其检测为关系并生成左连接。是的,甚至有两种方法,但您不会喜欢它们。要么返回最新的EF Core 2.2,要么等待EF Core 5.0最终修复此错误。
public class EmployeeConfiguration : IEntityTypeConfiguration<Employee&
我有一个多租户PostgreSQL数据库,它使用行级安全性来控制租户应该能够看到的内容
我正在使用EF Core和ASP.NET Core访问此数据库。为了处理租户访问,我使用连接拦截器来运行适当的数据库命令。例如:
为此,我创建了一个连接拦截器
public override async Task ConnectionOpenedAsync(
DbConnection connection,
ConnectionEndEventData eventData,
Can
我得到以下错误。只有在有多个调用时才会发生此问题。检查了很多关于这个的帖子
我正在为dbcontext使用services.AddTransient
提交id=xxxx,System.InvalidOperationException的处理机会优先级期间发生异常:在上一个操作完成之前,在此上下文上启动了第二个操作。这通常是由使用同一DbContext实例的不同线程引起的。有关如何避免DbContext线程问题的详细信息,请参阅Microsoft.EntityFrameworkCore.Inter
当使用EF7的beta1添加迁移时,还可以获得IMiglationMetadata的实现以及ModelSnapshot的子类。我想知道,有用的课程是用来做什么的。在哪里可以找到有关这方面的信息?或者有人可以在这里发布一些关于这方面的信息吗?我计划发布一篇博客文章,描述EF7中迁移的一些改进。发布后,我一定会在此处发布链接。发布:
我们刚刚从EF6合并到EF7,因为我们在应用程序中使用ASP.NET5。该项目刚刚开始,所以我们不会遇到发布依赖于beta库的代码的问题
我们遇到了级联插入的问题。通过级联插入,我的意思是子实体的集合被插入/更新为父实体。它似乎以一种令人惊讶的方式依赖于操作顺序
鉴于以下定义:
public class ParentEntity
{
public int Id { get; set; }
public ICollection<ChildEntity> Children
我使用的是实体框架7(beta版)。我想约束字段中的值,这样就不能添加重复项。
对于EF6,有一个索引标记,可以像以下那样使用:
public class MyEntityClass
{
[Index(IsUnique = true)]
[MaxLength(10)]
public string MyUniqueProperty{ get; set; }
}
遗憾的是,这个属性在EF7中不存在-我如何让EF7检查唯一性 数据注释在beta8中不可用,请参见
您可以在
我试图使用EF Core定义一对一关系,其中一方有一个可为空的外键,我不断得到以下错误:
'无法确定一对一的子/从属方
“Product.Transaction”和“Transaction.Product”之间的关系。
要标识关系的子/依赖方,请配置
外键属性。如果这些导航不属于
相同的关系配置它们,而不指定反向。
有关更多详细信息,请参阅
我不明白问题是什么,因为我只是像处理一对多关系一样(将对象及其id放在两侧):
p.S我也检查了这一点,唯一的区别是我还将Id作为字段放置在关系的两侧。
我
我使用值对象作为标识,并想知道如何最好地处理EF核心中的空值
例如,如果我有一名具有可选职称(先生、太太等)的员工:
我可以在代码中的任何地方检查空值
if (employee.TitleId == null) ...
或者我可以使用默认值,例如
if (employee.TitleId.Equals(EmployeeTitleId.None)) ...
使用EmployeeTitleId实现如下:
public class EmployeeTitleId
: Value<Empl
我想创建迁移的输出脚本,以使用Azure Devops管道更新数据库。当我使用以下命令时:
dotnet ef migrations script --project Eduly-api
我从我的试用迁移中获得了很好的结果:
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
CREATE TABLE [__EFMigrationsHistory] (
[MigrationId] nvarchar(150) N
我使用的是EF 7.0.0-rc1-final
下面的语句在服务器上生成多个查询。
这是正常的还是我遗漏了什么
Group myGroup = dbContext_
.Set<Group>()
.Include(x => x.GroupRoles)
.ThenInclude(x => x.Role)
.FirstOrDefault(x => x.Name == "Appr
我正在使用SQL Server 2017 Web版在Windows Server 2016上运行ASP.NET Core 2.1和EF Core 2.1应用程序
在public void Configure(IAApplicationBuilder应用程序,…方法的末尾,在Startup.cs中,我调用context.Database.Migrate();。这将应用迁移。
一切正常
现在,我在SQL Server 2016的开发环境中备份数据库,将MyDatabaseName.bak文件移动到服
我用.NETCore2.1和EFCore开发了一个web API。
但是我的ApplicationDbContext有一个我不理解的问题。
我有2个表(用户和配置文件,一对多),用户表中的外键配置文件不是必需的
使用Fluent API,当我声明关系时,ef core会在同一引用上创建重复的外键,但为什么
以下是我的用户模型:
public class UserModel
{
public long Id { get; set; }
public string Username
有没有一种方法可以从一个
modelBuilder.Entity().OwnsOne(
o=>o.ShippingAddress,
sa=>
{
属性(p=>p.Street).Ignore();//不编译
});
modelBuilder.Entity().OwnsOne(
o=>o.ShippingAddress,
sa=>
{
//属性(p=>p.Street).Ignore();//不编译
sa.Ignore(p=>p.Street);//这很有效
我有一个地址实体:
public Address {
public Int32 Id { get; set; }
public Collection<User> Users { get; set; }
public Collection<Book> Books { get; set; }
}
当我删除一本书时,我需要删除它的地址
当我删除一个用户时,我也在删除它的书籍(我有delete Cascade),所以我需要同时删除用户地址和它的书籍地址
删除用户或书
我先用代码。我已经创建了一个DbContext,但是我不能像在常规实体框架中那样将配置设置放在构造函数中。以下是常规EF6中的一个示例:
public AppsDbContext()
: base("name=AppsDbContext")
{
this.Configuration.AutoDetectChangesEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
我有一个非跟踪实体,一个想要解决一些导航的实体。因此,更改跟踪器中不存在EntityEntry。查询相关表的最佳方式是什么
这是我的代码外观,但由于change tracker中缺少条目,目前无法工作:
context.ParentTable.AsNoTracking().First();
context.Entry(ParentTable).Collection(p => p.Children).Load();
到目前为止,我理解为什么这不起作用
我的解决方法非常简单,但会产生大量开销
在EF6中,我可以创建如下映射字段:
Property(_ => _.Total_Excursion).HasColumnName("TOTAL_EXCURSION").HasColumnType("NUMBER")
.HasPrecision(12, 2);
现在我使用ef core,不能使用HasPrecision()函数。
还有其他替代方法吗?我想这样就可以了
如果您使用的是EF3
Property(
如何在EF 7 alpha3中建立一对一的关系
仅定义导航属性的旧方法不起作用,并且modelBuilder没有以前使用的HasRequired/HasOptional方法
有人能解释一下吗?直到最近,还没有任何用于定义关系的模型生成器API。相反,您必须操作底层的modelBuilder.Model对象。以下是一对多关系的示例
class博客
{
公共博客()
{
Posts=新列表();
}
公共int Id{get;set;}
公共ICollection Posts{get;set;}
}
需要帮助!我刚接触Core 2.0和VS 2017,对MVC没有太多经验。我有一个现有的数据库,我需要在工作中与核心2.0项目一起使用。我能够使用Scaffold DbContect从现有数据库创建域模型
但是,数据库开发人员正在对数据库进行更改并添加新表。我需要使我的域模型与正在进行的数据库更改保持同步
我在internet上唯一能找到的就是如何更改模型和更新数据库模式。但是,我需要根据对数据库所做的更改来更新模型。EF Core采用代码优先的方法。你们一起遵循DB First方法。因此,您应
在阅读了大量文章指出不建议将UOW和存储库模式放在EF Core db上下文之上之后,我几乎同意并准备在我的一个新项目中实现注入IDBContext的服务
我说差不多,因为我以前使用过一个特性,我不知道在没有存储库的情况下如何实现
在以前的项目中,我在EF上使用了UOW和存储库模式,并从服务访问了它们。以下方法将位于存储库中,并且可以在此后通过从任何服务调用uow.StudentRepository.Get(id)来调用
public async Task<Student> Get(
我使用的是EF Core 2,我正试图找出如何在现有数据库上进行第一次迁移时不丢失数据。现有数据库还没有迁移历史记录
如果我重新安装了应用程序,那么应该执行创建所有表的第一次迁移
如果我只是更新应用程序(意味着已经存在一个没有迁移历史记录的数据库),我就不能进行迁移来创建全新的表,因为它们已经存在。(不执行迁移也可以,只需执行EnsureCreated())但是,在这种情况下,我将失去对迁移历史的跟踪
也许我遗漏了一些明显的东西
编辑:我发现了这样的选项,比如注释掉第一次迁移的Up()方法的内容
我有一个用于自引用的多对多表,我希望有一个由两个外键组成的索引(或键)。
我还希望避免重复使用相同的键,并像
UserParentId xxx UserChildId
01=>ok
0.2=>ok
1=>不正常
2 0=>不正常,因为此链接已存在(请参阅第二行)
最重要的是,我想在这个索引中搜索两个无序提供的键。
差不多
_dbContext.UserToUsers.Find(userId1,userId2)
不知道userId1是表示UserParentId还是UserChildId
我已经读
所以我有两张桌子。
文章和特价,其中文章具有多个特价。
物品PK由Specials.ID和Specials.ID2组成。现在我很难实现这两个表之间的关系。
我通过FluentAPI进行了尝试,但无法将FK声明为拆分PK
builder.Entity<Article_New>()
.HasMany<ArticleSpecial>(a => a.Specials)
.WithOne()
.HasForeignKey
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 22 页