我正在使用oData 4开发ASP.NET MVC应用程序。直到昨天他们的项目都在VB.NET中。我们现在终于尝试从VB.NET迁移到C#。我试图将2个用C#编写的控制器引入到项目中,并且在两个实例中都接收到了可怕的"没有找到与控制器名称相匹配的类型#"尝试访问任一控制器时出错。
第一个是新控制器。它看起来像这样:
using System.Data.Entity.Infrastructure;
using System.Net;
using System.Web.Http;
using System.Web.OData;
namespace Controllers
{
public class ORDER_LINE_SUMMARYController : ODataController
{
private Entities db = new Entities();
[EnableQuery()]
public IQueryable<ORDER_LINE_SUMMARY> GetORDER_LINE_SUMMARY()
{
return db.ORDER_LINE_SUMMARY;
}
[EnableQuery()]
public SingleResult<ORDER_LINE_SUMMARY> GetORDER_LINE_SUMMARY([FromODataUri()] decimal key)
{
return SingleResult.Create(db.ORDER_LINE_SUMMARY.Where(ORDER_LINE_SUMMARY => ORDER_LINE_SUMMARY.ID == key));
}
protected override void Dispose(bool disposing)
{
if ((disposing))
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool ORDER_LINE_SUMMARYExists(decimal key)
{
return db.ORDER_LINE_SUMMARY.Count(e => e.ID == key) > 0;
}
}
}
为了确保我没有错过合并这个新控制器的步骤,我还尝试用C#控制器替换现有的VB.NET控制器并收到相同的错误。除了实体名称,代码基本上与上面的代码完全相同,所以为了简洁起见,我不在这里提出它。
一个有趣的说明,我认为这与潜在问题密切相关。当我添加新的C#控制器来替换现有的VB.NET时,我还没有从项目中删除VB.NET控制器。但是,两者的类名显然是相同的; .NET编译器没有错误或以其他方式抱怨这一点。我怀疑这个问题可能与尝试在同一个程序集中混合使用C#和VB.NET有关。
任何建议或想法将不胜感激。 TIA。