从Web窗体Scafolding访问EF项目 - System.ArgumentNullException

时间:2015-04-24 17:59:14

标签: t4scaffolding

我有一个C#EF 6数据库第一项目(" DocRetData"),我正在使用我的"模型"在VB.Net Web窗体项目中。我还使用了#34; Web Forms Scafolding"延期。我添加了对EF项目的引用,然后创建了" New Scaffold Item"。项目编译。当我运行它并访问"默认"页面它列出的项目很好,但当我去编辑或创建一个新项目时,我在ForeignKey_EditField类的GetData()函数中得到System.ArgumentNullException。它看起来像这样:

Public Function GetData() As IQueryable
    Dim entityType = Type.[GetType](Me.DataTypeName)
    Return _db.[Set](entityType).AsQueryable()
End Function

这必须与某种类型的引用冲突有关,因为如果我删除Data Project,将Model作为一个类添加到Web Forms项目中并执行所有相同的步骤然后我不会得到错误,可以编辑或创建项目就好了。

这里的数据结构非常简单。我试图在这里引用的表(对象)具有以下结构:

[AppSettingID] [int] IDENTITY(1,1) NOT NULL,
[CountyID] [int] NOT NULL,
[Name] [varchar](30) NOT NULL,
[VariableName] [varchar](50) NOT NULL,
[Setting] [varchar](4000) NOT NULL,
[FieldDataTypeID] [int] NOT NULL,

其中CountyID和FieldDataTypeID是其他表的外键。

在Return语句上发生错误,因为entityType为null。 Me.DataTypeName是" DocRetData.County"。我猜这与VB.Net处理或不处理命名空间但无法跟踪它的方式有关。

由于

DBL

1 个答案:

答案 0 :(得分:0)

我不确定它将如何应用于VB,但在C#中,如果Type存在于不同的类库中,则需要进行更改

  public IQueryable GetData()
  {
            var entityType = Type.GetType(this.DataTypeName + ",DAL");
            return _db.Set(entityType).AsQueryable();
  } 

因此,在我的示例中,我的实体存在的类库被称为DAL。我的DataTypeName是" DAL.tbl_Jobs"

所以Type.GetType(" DAL.tbl_Jobs,DAL")返回实体类型。

希望这有帮助

相关问题