我在C#中获取对象时遇到问题。我使用mongo驱动程序2.4.3。
我有这段代码:
public Employee GetEmployee(int id)
{
IMongoCollection<Employee> collection = conectWithDatabase();
var filter = Builders<Employee>.Filter.Eq("EmployeeId", id);
var obtenido = collection.Find(filter).First();
return obtenido;
}
和这个
public List<Employee> GetAllEmployees()
{
IMongoCollection<Employee> collection = conectWithDatabase();
var query = from employee in collection.AsQueryable<Employee>()
select employee;
return query.ToList();
}
在我调用GetEmplyee方法的第一个代码中,程序显示此异常
System.InvalidOperationException: 'No se pueden crear las instancias de
clases abstractas.' -> in this line collection.Find(filter).First();
在第二个代码中,当我尝试将查询var转换为list时,程序显示相同的异常。
我试图从MongoDB获取一个对象,如果有人可以帮助我,我就不能,我将非常感激。 对不起我的英文不好。
public abstract class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public DateTime StartDate { get; set; }
}
public class FullTimeEmployee : Employee
{
public int Salary { get; set; }
}
public class PartTimeEmployee : Employee
{
public double HourlyRate { get; set; }
}
答案 0 :(得分:0)
在基本级别..你需要映射鉴别器列,然后根据它匹配类型。
驱动程序应该能够为您执行此操作
Inheritance in MongoDb: how to request instances of defined type