0

クエリ結果に Identity User を含めることができません。他のエンティティは、レベルの深さに関係なく、問題なく含まれています。

使用しているモデルはこちら。

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();

結果では、City は問題なく入力されていますが、ApplicationUser はそうではありません。

これはネーミングの問題でしょうか?私はすでにUserId/UserAspNetUserId/AspNetUserをプロパティ名として試しましたが、成功しませんでした。

Migrations を使用してデータベースを作成しています。ユーザー用に作成されるテーブル名は AspNetUsers です。

私はエンティティ フレームワーク 7 ベータ 7 を使用していますが、これが他のバージョンにも当てはまるかどうかはわかりません。

これらは、EF 移行によって生成されたファイルです。

ApplicationDbContextModelSnapshot.cs

20150929181902_Init.cs

20150929181902_Init.Designer.cs

(アップロード用のファイルを生成するときに Building > City リレーションを含めるのを忘れていたことに気付きましたが、この例では問題になりません)

4

2 に答える 2

0

私はついにそれを理解しました。

ApplicationUserからIdentityUser継承しIdentityUser<string>ます。ジェネリック型が主キーとして使用されるため、string!

Guid外部キーのプロパティをstringsに変更したところ、すべてが機能するようになりました。

于 2015-10-06T07:31:37.970 に答える