为什么我不能从继承的类中创建脚手架项目

时间:2019-06-24 14:32:00

标签: vb.net asp.net-mvc-scaffolding

我有两个项目,其中某些类是DBContext类的扩展,用于将当前用户名保存到数据库中:

  • 项目数据模型:

    Public MustInherit Class ModelBase Inherits DbContext
      Public Sub New()
        MyBase.New()
        Me.CurrentUser = "unknown"
      End Sub
    
      Public Sub New(user As String)
        Me.New
        Me.CurrentUser = user
      End Sub 
    End Class
    
    Public Class Model Inherits ModelBase
      Public Sub New(user As String)
        MyBase.New(user)
      End Sub
    End Class
    
  • 项目用户界面(MVC):

    Public Class ModelUI Inherits DataModel.Model
      Public Sub New()
        MyBase.New(HttpContext.Current.User.Identity.Name)
      End Sub
    End Class
    

因此,对继承进行了简单的概述:

ModelBase
  |
  \- Model
       |
       \- ModelUI

在上述情况下,当尝试在UI项目中搭建MVC控制器时,出现以下错误:

  • 使用Datamodel.ModelBase

      

    运行选定的代码生成器时发生错误:“调用目标抛出了异常。”

  • 使用Datamodel.ModelUI.ModelUI

      

    运行选定的代码生成器时发生错误:“对象引用未设置为对象的实例。”

当我从MustInherit中删除Datamodel.ModelBase时,我可以毫无问题地创建脚手架控制器。但是,我仍然无法从继承的类中创建脚手架控制器:

  • 使用UI.ModelUI

      

    运行选定的代码生成器时发生错误:“调用目标抛出了异常。”

  • 使用Datamodel.Model

      

    运行选定的代码生成器时发生错误:“没有为此对象定义无参数的构造函数。”

所以,我当前的解决方法是:

  • 从基类中删除MustInherit
  • 重建解决方案
  • 从基类创建脚手架项目
  • 在脚手架中更改使用的类以使用子类

    Private db As New DataModel.ModelBase
    

    Private db As New ModelUI
    
  • 将MustInherit添加回基类

  • 重建解决方案
  • ...

有什么主意我为什么要做这一切?

0 个答案:

没有答案