EntityFrameworkを使用してSQL Serverの各テーブルのすべてのデータを読み込み、MongoDB C#を使用してそのデータをMongoDBにエクスポートする一般的な方法を考えます。ドライバ。ここでC#を使用してSQLテーブルからデータを読み込んでMongoDBにエクスポートする一般的な方法
は私が各テーブルに対してこれらの手順を繰り返す必要がないように、私は、これを実現するにはどうすればよい
using (MyEntities context = new MyEntities())
{
var projects = context.Projects.ToList();
foreach (var project in projects)
{
var entityType = Type.GetType($"NameSpace.Imp{project.Id}", false);
var entityTypeResults = context.{entityType}.ToList();
var entityTypeMongoCollection = _mongoConnect.Database.GetCollection<entityType>("MyCollectionName");
entityTypeMongoCollection.InsertMany(entityTypeResults);
}
}
をやろうとしていますものです。
すべて私のテーブルの名前はImp{Id}
で、ID list
はproject
です。テーブル名のリストがあります。私はC#の.NET 4.6.1を使用しています
誰かが同様の助けを探している場合は、Entity Frameworkの6.0、MongoDBのC#のドライバーここ@CodeCaster、に3.0
おかげで、完全な作業コードです。
public void ExporAll()
{
MethodInfo openMethod = typeof(MyCurrentClassName).GetMethod("CopyEntitiesToMongo");
using (MyEntities context = new MyEntities())
{
var projects = context.Projects.ToList();
Assembly assembly = Assembly.Load("NameSpace");
foreach (var project in projects)
{
var entityType = assembly.GetType($"NameSpace.Imp{project.Id}", false);
MethodInfo boundGenericMethod = openMethod.MakeGenericMethod(entityType);
if (_mongoConnect?.Database != null)
boundGenericMethod.Invoke(this, new object []{context, _mongoConnect.Database, "MyCollectionName"});
}
}
}
public void CopyEntitiesToMongo<TEntity>(DbContext context,
IMongoDatabase mongoDatabase,
string collectionName) where TEntity : class
{
if (context != null)
{
var entityTypeResults = context.Set<TEntity>().ToList();
var entityTypeMongoCollection = mongoDatabase.GetCollection<TEntity>(collectionName);
entityTypeMongoCollection.InsertMany(entityTypeResults);
}
}
"this"は、 'context. {entityType} .ToList();'と '_mongoConnect.Database.GetCollection'を意味しますか? 'DbContext.Set ()'といくつかの反映が役立つかもしれません。 –
CodeCaster
@CodeCaster私はあなたに従わなかった。それは質問かコメントですか?私は文脈を使って読むことができるようにしたいと思っています。 .ToList(); _mongoConnect.Database.GetCollection
HaBo