0

我在查询结果中遇到了包括我的身份用户在内的问题。其他实体也包括在内,无论深度多少。将身份用户与实体框架一起使用不起作用

这是我正在使用的模型。

Building * --- 1 City 
    *   * 
    |  /
    |  /
    1  1 
ApplicationUser 

和上下文:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public DbSet<City> Cities { get; set; } 
    public DbSet<Building> Buildings { get; set; } 
} 

两个BuildingCity具有以下属性:

public Guid ApplicationUserId { get; set; } 
public virtual ApplicationUser ApplicationUser { get; set; } 

我使用的检索数据的查询:

var building = context.Buildings 
    .Include(c => c.ApplicationUser) 
    .Include(c => c.City) 
    .Include(c => c.City.ApplicationUser) 
    .First(); 

在th e结果City填充得很好,但ApplicationUser不是。

这是一个命名问题吗?我已经试过UserId/UserAspNetUserId/AspNetUser作为没有成功的属性名称。

我正在使用Migrations创建数据库。为用户创建的表名是AspNetUsers。

我正在使用实体框架7测试版7,不知道这是否也适用于其他版本。

这些是由EF迁移生成的文件。

ApplicationDbContextModelSnapshot.cs

20150929181902_Init.cs

20150929181902_Init.Designer.cs

(我发现我忘了,包括建筑>生成上传文件时,城市的关系,但是这不应该的问题的例子)

+0

这可能是EF7中的一个错误。你的'OnModelCreating'方法是什么样的? – natemcmaster

+0

这是一个错字吗?包括(c => c.AspNetUser)。他们是否处于相同的背景下?你有一个DbSet的ApplicationUser? –

+0

@SteveGreene这是一个错字,只是清除它。他们在相同的背景下。用户位于DbSet中 - 它是IdentityDbContext中的一个属性。 – SaphuA

回答

0

我终于明白了。

ApplicationUser继承自IdentityUser,其继承自IdentityUser<string>。通用类型被用作主键,所以一个string

我改变了我的Guid外键属性string可现在一切工作。

相关问题