0

私は現在、MongoDB から MS SQL へのプロジェクトのアップグレードを手伝っています。Entity Framework はコード全体で広く使用されており、理解を深めようとしても、まだ少しイライラしていることを認めなければなりません。データベース内のクラスとさまざまな列の間の関係を自動的にマップするために使用できることは理解していますが、それ以上のことはほとんど知りません。ADO を使用してリレーションシップを手動で設定する古い方法に慣れているので、これは私にとって新しい経験です。

特にコードの一部である、アップグレードスキームの核心と思われるメソッドは、MS SQLと互換性のあるアナログを作成するのに苦労しているものです。コードは以下のとおりです。

public IQueryable<T> GetCollection<T>(ColName collectionName)
        {
            MongoDatabase database = GetDatabase();
            MongoCollection<T> collection = database.GetCollection<T>(collectionName.ToString());
            return collection.AsQueryable();
        }

通常、データベースから列名をコピーし、新しいオブジェクト内にフィールドを設定して、それらのリストを返します。この場合を除いて、それはジェネリック/テンプレートであり、エンティティは、データベースで見つけたものに従ってオブジェクト内のフィールドを自動的にマップする魔法を行うと思います。残念ながら、それは私ができる限りです。このサイトのチュートリアルやその他の質問を読んでいますが、経験のないものを使用しているため、これは少し頭を悩ませているようです。おそらく、何らかの設計の Linq ステートメントがここで機能するのではないでしょうか? または、より手動の何か...

どんな助けでも大歓迎です。

4

1 に答える 1

0

Entity Framework を使用してリポジトリ パターンを実装したと思います。したがって、DatabaseContext実装のタイプとしてDbContext. あなたは以下のようにそれを行うことができます:

public partial class Repository<T> : IRepository<T> where T : BaseEntity
    {
        private readonly DatabaseContext _context;
        private IDbSet<T> _entities;

        public Repository(DatabaseContext context)
        {
            this._context = context;
        }
        public virtual IQueryable<T> GetCollection()
        {
            get
            {
                return this.Entities;
            }
        }
   }
于 2013-06-19T15:07:40.283 に答える