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可現在一切工作。

相關問題