質問: チュートリアルや何かを探していた。 私はMVC5用の古い汎用リポジトリパターンを新しいMVC6プロジェクトに実装しようとしていました。 私は3つのクラスライブラリの`.Core` 、 `.Data`と`.Service`を設定し`.Core` 、 `.Data`問題があり`IDBset` 。私の`IDBset`はそれが気に入らないようですが、 `System.Data`とEntityフレームワーク6を追加しようとしましたが、 ...紛らわしい)。 Googleをローミングした後、私はここで尋ねることに決めました。正しい方法でチュートリアルがありますか、誰かが非常に単純なMVC6 Generic Repositoryパターンを投げてしまえますか?私はそれを行う古いメソッドが変更されている可能性がある気分を持っている、ちょうど傾きは、inbuilt DI以外の情報を見つけるようです。 コード:私の`IDbContext`インターフェイス ``` IDbSet Set() where TEntity : BaseEntity; ``` `IDbSet`が表示されません。これは単にEntity Frameworkのためですか?私はそれに言及している。 問題は、私はエンティティフレームワークのための使用法を見つけることができない場合があります。 更新: エンティティフレームワーク8.0.0ベータ版の使用。すべてのIDbset参照をDbSetに変更します。 しかし私のジェネリックリポジトリでは、次のようなメソッドを使用します。 ``` public virtual T GetById(object id) { return this.Entities.Find(id); } ``` "Find"はメソッドではありません。私はもはや私のキャッチで "DbEntityValidationException"を使用することはできません。
回答: Entity Framework 7 Beta 8にはFindメソッドが付属していません。おそらく最終リリース前に追加されます。 代わりに`FirstOrDefault`メソッドを使用する必要があります ``` public virtual T GetById(int id) { return this.Entities.FirstOrDefault(x => x.Id == id); } ``` `Id`プロパティは認識されないので、インターフェースを追加してリポジトリに実装する必要があります。 ``` public interface IEntity { int Id { get; set; } } ``` 例えば ``` public class GenericRepository : IGenericRepository where T: class, IEntity ``` github issueリストから 。 EF7は自動データ検証を実行しないため、DbEntityValidationExceptionはEF7に存在しません。 メモ:EF7はEFの更新ではなく、書き直しです。