EF7 IDが読み込まれないユーザーの拡張プロパティ

asp.net-core asp.net-identity entity-framework-core

質問

私は自分のDB上の別のエンティティへの参照を含む拡張IdentityUserクラスを持っていますが、UserManagerでUserを取得しようとするたびに、参照されたエンティティは常に空になります:

私のUserクラスの実装

public class Usuario : IdentityUser
{
    public int ClienteID { get; set; }
    public virtual Cliente Cliente { get; set; }
}

ユーザーの参照されたプロパティを使用するコントローラ

[Authorize]
[HttpGet]
public async Task<Direccion> GET()
{
    var usuario = await UserManager.FindByNameAsync(Context.User.Identity.Name);
    // Cliente will always be null
    return usuario.Cliente.Direccion;
}

また、リファレンスから仮想キーワードを削除しようとしました。そのため、レイジーロードされていますが、既にEF7に実装されているかどうかはわかりません。

どのようにこれを達成するための任意のアイデア?

人気のある回答

私もこの問題を抱えて、 EF Core Documentationの助けを借りて解決しました。関連するデータを設定するには、Includeメソッドを使用する必要があります。私の場合:

エンティティクラス:

public class ServiceEntity
{
    public int ServiceId { get; set; }
    public int ServiceTypeId { get; set; }

    public virtual ServiceTypeEntity ServiceType { get; set; } 

}

私のDbContextオブジェクトへのアクセス:

public ServiceEntity GetById(int id)
{
    var service = this.DbClient.Services.Include(s => s.ServiceType).Where(c => c.ServiceId == id).FirstOrDefault();

    return service;
}

私はプロパティを "仮想"にしなければなりませんでした。私の理解は、EF Coreは関連オブジェクトのプロパティをオーバーライドして値を設定できる必要があります。

また、このポストデータの時点で、EF Coreはレイジーロード、Eager LoadingおよびExplicit Loadingのみをサポートしていません。

お役に立てれば!



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ