MVC View Scaffolding不使用Generic基类?

时间:2015-12-02 14:35:37

标签: c# asp.net asp.net-mvc visual-studio generics

是否有理由在Visual Studio 2015中内置的MVC View Scaffolding不能与包含通用ID的继承基类一起使用?简单的测试用例:

public abstract class BaseEntity
{
}

public abstract class Entity<TKey> : BaseEntity
{
    public TKey Id { get; set; }
}

public class Country : Entity<int>
{
    public string Name { get; set; }
    public string CountryCode { get; set; }
}

尝试使用Country实体创建一个scaffolded视图(例如List,Create,Edit,Delete)会导致以下错误弹出:

运行所选代码生成器时出错:&#39;方法或操作未实现。&#39;

如果我删除TKey类型参数并通过为Id定义固定类型使Entity非泛型,我可以构建视图。

我知道在这个简单的例子中,我没有通过使用通用基类来节省很多工作。我也知道&#34;最佳做法&#34;是在视图中使用View Models而不是Domain Models。但是,我想了解为什么使用泛型类型的基类会导致脚手架出现问题。

1 个答案:

答案 0 :(得分:2)

我也遇到过这个bug,发现它已经在Microsoft Connect上报告了。我们现在看来唯一的选择是:

  • 通过临时删除继承来从控制器生成视图(虽然不是一个好主意,但可以避免浪费很多时间)
  • 正在等待Microsoft的修复

注意:似乎同样的问题会影响Visual Studio 2013(更新5),但我没有找到任何错误跟踪器条目。

如果您想跟踪错误修复的进展或向支持团队提供更多信息,您可以访问Microsoft的错误跟踪器: https://connect.microsoft.com/VisualStudio/feedback/details/2187798/mvc-view-scaffolding-not-working