【问题标题】:Compile ERROR: The type is defined in an assembly that is not referenced编译错误:类型是在未引用的程序集中定义的
【发布时间】:2015-03-29 11:52:37
【问题描述】:

我正在开发一个 3 层应用程序。我使用 O/R 设计器添加了一个 Linq to SQL 表 (LEAVE)。我在业务层的类 (LeaveRecord) 中添加了以下方法从表 (LEAVE) 中检索数据。

public IQueryable<LEAVE> getLeaves()
{
    dbContext db = new dbContext;
    return db.LEAVEs;
}

在 UI 层,在 webform 后面的代码中,我尝试获取这样的数据:

bll.LeaveRecord leaveRecords = new bll.LeaveRecord();
var data = leaveRecords.getLeaves(); // the error message highlights this line (41) as the offender

当我运行程序时,我得到一个编译错误:

The type 'programname.dal.LEAVE' is defined in an assembly that is not referenced. You must add a reference to assembly 'programname.dal, version=1.0.0.0, Culture=neutral, PublicKeyToken=null' (Line 41).

我该如何解决这个问题?

【问题讨论】:

    标签: c# linq .net-assembly 3-tier


    【解决方案1】:

    最简单的解决方案是在 UI 项目中添加对 dal 的引用。

    【讨论】:

    • 感谢伊斯万托。关于如何做到这一点的任何代码示例?谢谢。
    • 我尝试了“Using projectname.dal;”,但我得到了类型或命名空间“dal”在命名空间“projectname”中不存在的错误。
    • 你有没有从 ui 项目中添加对 dal 的引用?在您的解决方案资源管理器中,转到 ui 项目,右键单击参考,选择项目 -> dal。
    【解决方案2】:

    您正在从您的bll 公开dal 数据类型。因此,如果有人想要使用 bll API(即您的 UI),则还需要引用 dal

    因此,您可以选择从UI 引用您的dal,或者在bll 中进行数据类型切换并公开bll 中定义的新数据类型。

    【讨论】:

    • 感谢您的回复。我对 ASP.NET 还很陌生。请你给我看一个小代码示例。谢谢。
    • 这是一个架构决策。唯一适用的代码是您是否希望 bll 中有一个新的数据类型,或者您是否希望 bll 的调用者必须引用 dal。
    • 我不知道这两个决定的后果。您可以更好地为我建议使用哪个以及如何使用。我只是想让它工作。感谢您的宝贵时间。
    【解决方案3】:

    您必须编组您的数据对象:

    public DaoLeave
    {
        // Properties of DaoLeave, same as properties of LEAVE
    
        internal void DaoLeave(LEAVE doLeave)
        {
            // set properties from properties ... alternately, use something like AutoMapper
        }
    }
    
    public IQueryable<DaoLeave> getLeaves()
    {
        dbContext db = new dbContext;
        return db.LEAVEs.Select(l => new DaoLeave(l));
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 2017-01-31
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多