Tag: entity framework 6

用于在接口上映射的entity framework解决方法

我想创建一种在我的entity framework应用程序中应用软删除的通用方法。 我有一个定义删除字段的接口模型: public interface IModel { bool Deleted { get; set; } Nullable Created { get; set; } Nullable Modified { get; set; } } 几乎我应用程序中的每个模型都实现了这个IModel 。 为了让DbContext删除设置为true的所有记录,我想应用映射。 我用这篇好文章作为我实现的基础。 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity() .Map(m => m.Requires(“Deleted”).HasValue(false)) .Ignore(m => m.Deleted); } 但是,entity framework(显然)不支持接口映射。 这使得我努力尝试以这种方式工作,以至于我不必单独将此映射应用于每个模型。 是否有其他流畅的API方式让我在所有实现IModel模型上应用映射而没有大量多余的代码?

Linq Any总是返回true

我已经使用Linq to Entities多年了,但这是我第一次遇到这个问题。 我有提示和项目表,每个提示可以有很多项目。我在数据库中只有3个项目。 在编辑项目时,我想确保GivenId字段对于具有相同提示的项目是唯一的。 我用这个: Item item =db.Items.FirstOrDefault(c => c.Id == id); if (item != null) { if (db.Items .Any(x => x.GivenId == newGivenId && x.Id != item.Id && x.TipId == item.TipId)) { //newGivenId is either different or if it is the same, //it belongs to the same item } else { //newGivenId already […]

模拟entity framework长LINQ查询

有一个想要测试模拟entity framework的LINQ查询表达式(如下)。 要模拟我正在使用代码:使用模拟框架的entity framework测试这适用于其他查询,但不适用于此 var query = from vwPs in _reportingDbContext.VwAccountNumber join ps in _reportingDbContext.PaymentSummary on new { Key1 = vwPs.Id, Key2 = vwPs.AccountNumber, Key3 = true, Key4 = true } equals new { Key1 = ps.Id, Key2 = ps.AccountNumber, Key3 = ps.PaymentDate >= fromDateTime, Key4 = ps.PaymentDate < toDateTime } into viewJoinPayment from ps […]

调用异步方法时使用.Wait()的情况是什么

我的asp.net mvc-5 Web应用程序中有以下async长时间运行方法: – public async Task ScanAsync(string FQDN) { // sample of the operation i am doing var c = await context.SingleOrDefaultAsync(a=>a.id == 1); var list = await context.Employees.ToListAsync(); await context.SaveChangesAsync(); //etc.. } 我正在使用支持运行后台作业的Hangfire工具来及时调用此异步方法,但不幸的是,hangefire工具不支持直接调用异步方法。 所以为了克服这个问题,我创建了上述方法的同步版本,如下: – public void Scan() { ScanAsync(“test”).Wait(); } 然后从HangFire调度程序我调用sync方法如下: – RecurringJob.AddOrUpdate(() => ss.Scan(), Cron.Minutely); 所以我知道使用.Wait()将主要在方法执行期间占用iis线程,但正如我所提到的,我需要这样做,因为我无法在hangefire调度程序中直接调用异步TASK。 那么当我使用.Wait()调用异步方法时会发生什么?整个方法的操作是否会以同步方式完成? 例如,如上所示,我在ScanAsync()有三个异步操作; SingleOrDefualtAsync , ToListAsync和SaveChangesAsync […]

如果用户使用ASP.NET直接在浏览器中访问URL,如何重定向到登录页面

我正在研究asp.netentity framework。 我只想通过登录访问页面,而不是直接输入页面的URL。 如果用户输入页面的URL并尝试访问它,则应将其重定向到登录页面。 我怎样才能做到这一点? 用户应该使用DB的用户名和密码登录。 我是ASP.NET的新手

是否有更好/更清晰的方法来查找独立关联更改(添加/删除)?

我发现这个答案 (除非我遗漏了一些东西)提供了一个很好的解决方案来捕获对DbContext中所有独立关联所做的所有更改。 我正在尝试将该解决方案调整为更具体的内容,以创建可以在特定实体上查找特定导航属性的更改的函数。 目标是让这个函数的用户不必担心EntityFramework的任何内部结构,并且只关心他的POCO模型。 这是我到目前为止,它的工作原理。 但在我看来,如果entity framework的内部实现细节发生变化,它看起来非常混乱并且容易中断 – 特别是那里有一个“魔术字符串” “ClrPropertyInfo” ,可能不是EF接口合同的一部分。 public partial class EntityFrameworkMaterializer { public IEnumerable GetAssociationChanges(T1 parent, string propertyName, EntityState findState) { // this.context is a DbContext instance that is a property of the object. ObjectContext ocontext = ((IObjectContextAdapter)this.context).ObjectContext; MetadataWorkspace metadataWorkspace = ocontext.MetadataWorkspace; // Find the AssociationType that matches the property traits […]

使用entity framework代码保存分离的对象图首先导致主键冲突

我正在尝试使用Code First流利的符号保存我已映射到EF6的POCO的对象图。 然而,在保存对象图之后,我偶然发现了主键冲突exception。 对象图非常简单: 一个Issue可以包含多个WorkItems ,每个Author (作为User )。 外部填充对象(使用Web API) 当我尝试使用两个引用同一作者的工作项来保存问题时,我希望插入问题,插入工作项和插入一个作者,另一个要引用或更新。 然而,会发生的问题是插入问题,插入工作项并插入对同一用户的两个引用,从而导致主键冲突。 简化的问题对象: public class Issue { public Issue() { WorkItems = new List(); } public string Id { get; set; } private List _workItems; public List WorkItems { get { return _workItems ?? new List(); } set { _workItems = value; } } } […]

entity framework一对多或一个外键关联

我正在更改现有应用程序的后端以使用Entity Framework Code First。 我已经使用Visual Studio 2015中的内置工具基于我现有的数据库生成POCO类。 这在大多数情况下都是完美的,除了两个类,一对一或零关系。 这些是我的(简化)课程: public class Login { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int TeamMemberId { get; set; } public virtual TeamMember TeamMember { get; set; } } public class TeamMember { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public virtual Login Login […]

错误:“Id字段是必需的。”在使用AspNet.Identity 2.0在数据库中注册新用户时

欢迎, 我在Asp.Net mvc应用程序中创建(注册)新用户时遇到了主题中提到的validation错误,我在我的自定义ApplicationUser类中使用了Asp.Net Identity public class ApplicationUser : IdentityUser { public async Task GenerateUserIdentityAsync(ApplicationUserManager manager) { var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); return userIdentity; } public virtual string EmailConfirmedChar { get; set; } public virtual string PhoneNumberConfirmedChar { get; set; } public virtual string TwoFactorEnabledChar { get; set; } public virtual string LockoutEnabledChar { get; […]

在Entity Framework中获取被忽略的属性

我在EF的框架上工作。 我想获取实体的所有被忽略的属性来构建一些特殊的查询。 我该怎么做? public class Customer { public int Id { get; set; } public DateTime BirthDate { get; set; } public int Age { get; set; } } public class CustomerContext : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Ignore(customer => customer.Age); base.OnModelCreating(modelBuilder); } public DbSet Customers { get; set; } } public […]