草庐IT

Doctrine-Entity

全部标签

c# - Entity Framework 6 代码优先 : what is the best implementation for a baseobject with 10 childobjects

我们首先有一个包含10个子对象和EF6代码的基础对象。在这10个子对象中,5个只有少数(额外)属性,5个具有多个属性(5到20个)。我们将其实现为每个类型一个表,因此我们有一个基本表和每个child1个表(总共10个)。但是,这会在各处创建带有selectcase和unions的巨大选择查询,这也需要EF6秒来生成(第一次)。我读到了这个问题,同样的问题也存在于每个具体类型场景中。所以我们剩下的是每个层次结构的表,但这会创建一个包含大量属性的表,这听起来也不太好。是否有其他解决方案?我考虑过当我想从所有子对象/记录中获取所有项目时可以跳过继承并创建一个联合View。还有其他想法吗?

c# - 为什么我无法在 Entity Framework 的 SaveChanges() 方法上捕获 SqlException

我将SaveChanges()方法放在try/catchblock中,但我无法捕获SqlExeption。try{db.SaveChanges();}catch(Exceptionex){} 最佳答案 SqlException是System.Data.SqlClient.SqlException类所以你不能捕获这个异常是正常的EntityFrameworkDbContext.SaveChangesMethod()只能抛出以下异常MSDNDbUpdateExceptionDbUpdateConcurrencyExceptionDbEn

c# - 禁用 Entity Framework 代理创建

根据我的阅读,设置ProxyCreationEnabled=false将阻止更改跟踪和延迟加载。但是,我不清楚更改跟踪涵盖的内容。如果我禁用它并从数据库中获取一个实体,对其进行更改并提交,那么这些更改将被保存。我仍然能够从ChangeTracker获取修改后的条目:ChangeTracker.Entries().Where(x=>x.State==EntityState.Modified).ToList()如果我禁用了代理创建,这是否可行?我想禁用它,但我想清楚我要禁用的是什么。 最佳答案 我可以确认在EF中将ProxyCreati

c# - 升级到 Entity Framework 4.3.1 后未处理的异常

错误:未处理的异常:System.Data.SqlClient.SqlException:操作失败,因为表“PrivateMakeUpLessons”上已存在名为“IX_ID”的索引或统计信息。模型(简化,构建在单独的测试项目中进行调试):publicabstractclassLesson{publicGuidID{get;set;}publicstringRoom{get;set;}publicTimeSpanTime{get;set;}publicintDuration{get;set;}}publicabstractclassRecurringLesson:Lesson{publ

c# - Entity Framework 返回旧数据

我遇到一个问题,EF没有在3层WPF应用程序中返回最新数据,我怀疑这与我处理上下文生命周期的方式有关。这是场景:一个UnitOfWork中包含多个存储库。还有一项服务(MyService),它使用UnitOfWork。此UnitOfWork还必须直接从UI调用,而不通过服务。我在主窗口的ViewModel中的某个时刻创建了一个新窗口(首先使用ViewModel):vardialog=newDialogViewModel(_eventAggregator,_unitOfWork,Container.Resolve());这个主窗口ViewModel有一个UnitOfWork,它已被注入(

c# - Entity Framework - "An error occurred while updating the entries. See the inner exception for details"

这个问题在这里已经有了答案:FindingthereasonforDBUpdateException(9个回答)关闭3年前。我有问题,我刚开始学习EFModelFirst,我在一个点上停留了一段时间。我收到这样的错误:“更新条目时发生错误。有关详细信息,请参阅内部异常”我在图表上创建了一个简单的模型,生成了数据库并用C#编写了简单的代码以在表格中只添加一行,但错误一直出现。我发布了带有Diagram/GeneratedDLL/SimpleMain/Anderrorthrowing的截图更大尺寸的链接:http://i.imgur.com/bKGc4wv.png

c# - Entity Framework Core 数据库第一种方法复数表名

我们现有的数据库具有复数表名。例如Documents。我正在尝试将新的EFCore和Asp.NetCore与基于本文here的数据库优先方法结合使用我运行以下命令从现有数据库创建模型Scaffold-DbContext"Server=(local);Database=MyDatabase;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels但是,当我运行脚手架命令时,它会创建具有复数名称的模型。例如Documents表转换为模型名称Documents。我如何更改它以便它可以对模型

c# - Entity Framework 中推荐的身份生成方法是什么?

我对StoreGeneratedPattern的最高性能方式很感兴趣。以前我习惯让DB帮我生成ID,但我想知道这样设置有没有什么好处StoreGeneratedPattern=None代替StoreGeneratedPattern=Identity我什至不确定将其设置为“已计算”时会发生什么。有什么建议吗?有没有与此相关的好文章,因为msdn不是很清楚。在我的模式中,我主要使用整数和少量GUID。 最佳答案 查看我的blogpost关于StoreGeneratedPattern。它解释了Identity和Computed之间的一些区

c# - 如何在 Entity Framework 中使用 DateTime.AddDays(x)

我有这个代码:fromprine.ProgramSetup.Include("Program").Include("Program.Client")wherepr.DateBeginDateTime.Now.AddDays(pr.DateEndOffset)selectpr).ToList();它不起作用,因为AddDays()不可能用于生成sql。那么还有别的办法吗?现在我选择所有内容并最终通过foreach对其进行过滤,但我认为这不是好方法。问题是pr.DateEndOffset也只在db中,它不是常量... 最佳答案 usin

c# - Entity Framework : difference between Detach and AsNoTracking

我的目标是复制一个现有的实体,稍微修改它,然后插入修改后的版本。我尝试了两种似乎都有效的不同方法:varthing=context.Things.Where(x=>x.SomeID==someid).AsNoTracking().Single();thing.AnotherID=1234;context.Things.AddObject(thing);context.SaveChanges();varthing=context.Things.Where(x=>x.SomeID==someid).Single();context.Detach(thing);thing.AnotherID