如何从c#获取mongodb驱动程序3.4.2的对象

时间:2017-04-12 23:19:25

标签: c# mongodb mongodb-.net-driver

我在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; }
}

1 个答案:

答案 0 :(得分:0)

在基本级别..你需要映射鉴别器列,然后根据它匹配类型。

驱动程序应该能够为您执行此操作

Inheritance in MongoDb: how to request instances of defined type