为什么EntityCollection有时会暴露扩展方法,有时候不会?

时间:2011-01-10 10:47:45

标签: .net entity-framework

我正在尝试对我们的实体框架模型进行一些更改,这导致我目前遇到大量麻烦 - 我们的想法是将两个数据库之间的1:1关系更改为多对多关系。如果您在EF中进行更改然后重建数据库,则它生成的用于表示此关系的对象 - 不出所料 - 是一个EntityCollection而不是单个类型对象。

目前我一直在浏览此更改生成的所有错误,并将DatabaseObject引用更改为DatabaseObject.ElementAt(0),以便我可以构建它。然而,一组引用似乎没有给我EntityCollection上的扩展方法,允许一个人对一个集合进行操作 - 比如ElementAt(),Select(),First()等等,我看不出为什么

在有效的实例中,对象是从基类生成的,然后继承该基类:

            _task = _customersRepository.GetDeepTask(taskId);
            _customerService = _task.CustomerServiceFeature.CustomerService;

           //then in class which inherits above code

           string conStr = customerService.DatabaseObject.ElementAt(0).GetConnectionString(_customerService);

但是在没有给我扩展方法的实例中,它的生成方式如下:

    public void Execute(ScheduledTask task)
    {
        CustomerService service = task.CustomerServiceFeature.CustomerService;
        //this errors and doesn't offer extension methods
        string ConnectionString = service.DatabaseObject.GetConnectionString(service);
    }

我看不出为什么这两个实例表现不同?

干杯, 马特

1 个答案:

答案 0 :(得分:5)

您需要对包含扩展方法类的命名空间进行using声明。

E.g。要在SelectWhere上查看IEnumerable<T>IQueryable<T>个扩展方法,需要有

using System.Linq;

代码。