我有两个项目,其中某些类是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.Model
或UI.ModelUI
运行选定的代码生成器时发生错误:“对象引用未设置为对象的实例。”
当我从MustInherit
中删除Datamodel.ModelBase
时,我可以毫无问题地创建脚手架控制器。但是,我仍然无法从继承的类中创建脚手架控制器:
使用UI.ModelUI
:
运行选定的代码生成器时发生错误:“调用目标抛出了异常。”
使用Datamodel.Model
:
运行选定的代码生成器时发生错误:“没有为此对象定义无参数的构造函数。”
所以,我当前的解决方法是:
在脚手架中更改使用的类以使用子类
Private db As New DataModel.ModelBase
到
Private db As New ModelUI
将MustInherit添加回基类
有什么主意我为什么要做这一切?