Tag: entity framework

添加了ValidationContext项的MVC和EFvalidation

我有一个场景,我想在ValidationContext中添加一个项目,并在EF触发实体validation中检查它。 我在向导中执行此操作,因此我只能在特定步骤上validation某些内容。 (如果有一个好的模式,请分享它)。 问题是在控制器操作被击中之前,实际上会触发两次validation。 我希望我理解为什么。 在发生这种情况之前我不确定如何在ValidationContext中获取该项,因此我无法告诉validation我正在进行哪一步。 此外,如果我通过在下面的代码中检查项目来触发保存更改时仅执行自定义validation,那么当页面刷新时,我不会显示自动模型validation错误。 在我的自定义环境中: public WizardStep Step { get; set; } protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary items) { items.Add(“ValidationStep”, Step); return base.ValidateEntity(entityEntry, items); } 设置实体的服务: public void SaveChanges(WizardStep step) { _context.Step = step; _context.SaveChanges(); } 在我的实体中 public IEnumerable Validate(ValidationContext validationContext) { // Step will only be present when called from […]

渴望加载多对多 – EF Core

您好我有很多关系设置如下。 public class order { public int id { get; set; } public virtual ICollection Products { get; set; } } public class product { public int id { get; set; } public virtual ICollection Orders { get; set; } } public class OrderProducts { public int OrderId { get; set; } public virtual Order […]

强制急切加载导航属性

我正在使用EF Code First,我有一个名为Category的导航属性,我想在每个调用中加载: public class Product { … public Category Category { get; set; } } 要做到这一点,我必须将它包含在我将在Product上进行的所有调用中 var results = from p in db.Products.Include(“Category”) select p; 有没有办法让Category属性急切加载,因此在每次调用时生成一个SQL连接,而不必每次都包含它? 谢谢

为什么`DatabaseGenerated(DatabaseGeneratedOption.Identity)`在MVC 4中不起作用

我试图将我的MVC 3项目移动到MVC 4但是当我想移动这个模型时: public class Link { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid ID { get; set; } [DisplayName(“Shorted URL”)] public string SURL { get; set; } [DisplayName(“General Link”)] public string OriginalURL { get; set; } [DisplayName(“Click Count”)] public int ClickCount { get; set; } } public class LinkDBContext : DbContext { public DbSet Links { get; set; […]

entity framework – 当前命令超时值是什么

我正在使用Entity Framework 5,我希望知道命令超时值。 为此,我将dbContext对象转换为ObjectContext,然后访问CommandTimeout属性。 int ? currentCommandTimeout = ((IObjectContextAdapter)dbContext).ObjectContext.CommandTimeout; 此属性的当前值为null,这意味着当前命令超时是基础提供程序的默认值。 谁是底层提供者? 在这种情况下,如何读取(通过EF代码)当前命令超时值? MSDN ObjectContext CommandTimeout属性引用 编辑:感谢您解释如何设置命令超时并在文档中查找默认命令超时值。 但问题仍未解决。 如果可能,如何在默认情况下通过EF读取命令超时值。

entity framework实体不在DataSpace.OSpace(_workspace.GetItemCollection(DataSpace.OSpace))中,而是在DataSpace.CSpace中

我一直在使用XML for entity Framework。 我试图创建一种可以在运行时注入属性的实体,首先我创建了动态的DynamicEntity对象 public class DynamicEntity : DynamicObject { Dictionary dynamicMembers = new Dictionary(); public override bool TrySetMember(SetMemberBinder binder, object value) { dynamicMembers[binder.Name] = value; return true; } public override bool TryGetMember(GetMemberBinder binder, out object result) { if (dynamicMembers.TryGetValue(binder.Name, out result)) { return dynamicMembers.TryGetValue(binder.Name, out result); } result = “”; return true; } […]

为什么IQueryables没有SingleOrDefaultAsync?

以下代码无法编译,因为SingleOrDefaultAsync()不是GetAppointments()的合适扩展。 我只是想知道为什么…… public IQueryable GetAppointments() { return Context.Appointments; } public async Task GetAppointmentAsync(int appointmentId) { return await GetAppointments().SingleOrDefaultAsync(a => a.ID == appointmentId); } 我使用的是EF 6.0.0。 请忽略我在这里做的事情。 我只是想让事情变得比他们在我的项目中更容易。

如何结合Find()和AsNoTracking()?

如何在对EF上下文进行查询时将Find()与AsNoTracking()结合使用,以防止跟踪返回的对象。 这是我不能做的 _context.Set().AsNoTracking().Find(id); 我怎样才能做到这一点? 我使用EF版本6。 注意:我不想使用SingleOrDefault()或Where 。 我只是不能,因为参数Id是通用的,它是一个struct ,在这种情况下我不能将operator ==应用于generics。

从类型中获取DbSet

我正在尝试为MVC 6应用程序创建通用表查看器/编辑器。 我目前正在使用 Context.GetEntityTypes(); 给我一个表格列表。 现在我需要获取特定类型的数据。 我目前的实施是: // On my context public IQueryable GetDbSetByType(string fullname) { Type targetType = Type.GetType(fullname); var model = GetType() .GetRuntimeProperties() .Where(o => o.PropertyType.IsGenericType && o.PropertyType.GetGenericTypeDefinition() == typeof(DbSet) && o.PropertyType.GenericTypeArguments.Contains(targetType)) .FirstOrDefault(); if (null != model) { return (IQueryable)model.GetValue(this); } return null; } 在我的控制器中使用此代码 [HttpGet(“{requestedContext}/{requestedTable}/data”)] public IActionResult GetTableData(string requestedContext, string requestedTable) { […]

EF返回的值不同于查询

所以我只是遇到了这个奇怪的情况,并想知道是否有人可能知道问题是什么。 我有以下EF Linq查询。 var hierarchies = (from hierarchy in ctx.PolygonHierarchyViews where hierarchy.DashboardId == dashboardId select hierarchy); 当我在调试器中检查该查询时,它显示以下SQL SELECT [Extent1].[DashboardId] AS [DashboardId], [Extent1].[CurrentId] AS [CurrentId], [Extent1].[PolygonTypeId] AS [PolygonTypeId], [Extent1].[DisplayName] AS [DisplayName], [Extent1].[ParentId] AS [ParentId] FROM [dbo].[PolygonHierarchyView] AS [Extent1] WHERE [Extent1].[DashboardId] = @p__linq__0 如果我在SQL Server Management Studio中运行它, @p__linq__0使用dashboardId的值替换@p__linq__0 。 我得到了这些结果。 DashboardId CurrentId Type Name ParentId 4 5 […]