我从SQL Server中提取数据,并使用ElasticSearchCRUD nuget将其放在Elastic Search中。我只是遇到了一点麻烦。
你能帮忙得到DBSet的类型。
static void Main(string[] args)
{
using (var db = new Inventories())
{
db.Database.Connection.Open();
var sets =
from p in typeof(Inventories).GetProperties()
select p.Name;
//This one works if I hardcode the class name.
var query1 = from b in db.FileSlot_39065
select b;
//This one gets all the class names
var query = from b in sets
select b;
foreach (var item in query1)
{//This FileID will be populated by intellisense
Console.WriteLine(item.FileID);
}
IElasticsearchMappingResolver elasticsearchMappingResolver = new ElasticsearchMappingResolver();
using (var elasticsearchContext = new ElasticsearchContext("http://localhost:9200/", elasticsearchMappingResolver))
{
foreach (var item in query)
{
if (item.ToString().StartsWith("FileSlot"))
{
Type itemType = item.GetType();
dynamic objType = item;
// Do not know how to get the FileID here **
elasticsearchContext.AddUpdateDocument(item, objType.FileID);
}
}
try
{
elasticsearchContext.SaveChanges();
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
}
}
我有一个名为FileID的属性,它存在于我的所有DbSet中,与通用类型无关。 我的DbSets如下
public DbSet<FileSlot_39065> FileSlot_39065{ get; set; }
public DbSet<FileSlot_39066> FileSlot_39066{ get; set; }
我将把所有dbsets读作var set,然后拉取数据并写入Elastic Search。
现在我的问题是获取objType.FileID,我尝试转换为动态变量,但它只是不转换为其对象类型。
有没有人可以帮助我了解如何动态获取类名及其类型,这将有助于我设置正确的方法。