【问题标题】:EF Project Access From Web Forms Scafolding - System.ArgumentNullException从 Web 窗体支架访问 EF 项目 - System.ArgumentNullException
【发布时间】:2015-07-03 11:11:18
【问题描述】:

我有一个 C# EF 6 Database First 项目(“DocRetData”),我在 VB.Net Web 窗体项目中用作我的“模型”。我也在使用“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

这必须与某种引用冲突有关,因为如果我删除数据项目,将模型添加为 Web 窗体项目中的一个类并执行所有相同的步骤,那么我不会收到错误并且可以很好地编辑或创建项目。

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

[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 为空。 Me.DataTypeName 是“DocRetData.County”。我猜这与 VB.Net 处理/不处理命名空间但无法追踪它的方式有关。

谢谢

dbl

【问题讨论】:

  • 与 VB.Net 命名空间没有任何关系。刚刚创建了一个准系统 C# Web 窗体应用程序,它做的事情完全相同。
  • 我确实有同样的问题你找到任何解决方法了吗?
  • 我做了,但我不记得它是什么。我将不得不审查并查看。

标签: t4scaffolding


【解决方案1】:

我不确定它将如何应用于 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") 返回实体类型。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多