EF7ではDbSet Create()メソッドの代わりに何を使用すればよいのですか?それは単に新しいT()

c# entity-framework entity-framework-core

質問

私はef 5アプリケーションでgeneric repository pattrenを使用していgeneric repositoryIDbSetにはef7のDbSet存在しないcreate()メソッドがあります。

EF5のCreate()メソッドの説明は次のとおりです。

このセットの型のエンティティの新しいインスタンスを作成します。このインスタンスは追加されず、セットに追加されないことに注意してください。基になるコンテキストがプロキシを作成するように設定され、エンティティタイプがプロキシを作成するための要件を満たしている場合、返されるインスタンスはプロキシになります。

コードサンプル:

public interface IRepository<T> where T : IDisposable {
    T Create();
}

public class Repository<T> : IRepository<T> where T :  IDisposable {

    protected IUnitOfWork uow;
    protected IDbSet<T> entity;

    public Repository(IUnitOfWork uow) {
        this.uow = uow;
        this.entity = uow.Set<T>();
    }

    public T Create() {
        return entity.Create();
    }
}

私の質問は、なぜCreate();メソッドがEF7のDbSet削除されました( IDbSetもEFコアで削除されていることに注意してIDbSet

私はこの質問を見つけました: Create()とnew T() 、私は新しいT()を使用すれば将来何か問題がありますか?

受け入れられた回答

私が見つけたのは、そのようなメソッドが実装されていない理由は、Entity Framework Core(EF7)がプロキシをまったく使用していないということです。したがって、そのようなメソッド(エンティティのプロキシを作成する)の付加価値はなくなりました。私の意見では、エンティティのデフォルトのコンストラクタが行く方法です。

ディスカッションを参照してください: https : //github.com/aspnet/EntityFramework/issues/3797



Related

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