gpt4 book ai didi

c# - 将 LINQ 与不同层一起使用意味着我无法访问特定类型

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:19 25 4
gpt4 key购买 nike

我的解决方案有 3 层:

  • DAL(使用 LINQ 访问我的数据库)
  • 业务层
  • 电脑

在我的 DAL 中,我从我的数据库返回一个具有特定类型的 List,并且我在我的 BLL 中做同样的事情。

当我想在我的 UI 中使用我的函数时,出现错误:

The type 'Reservation' is defined in an assembly that is not referenced...

现在我想避免在我的 UI 中引用我的 DAL。

由于我是新手,在网上找不到明确的答案,有人可以帮我吗?

我的 DAL 函数

public static List<Reservation> SelectListReservation()
{
try
{
List<Reservation> lstReservation = new List<Reservation>();
lstReservation = oExamenSgbdEntities.Reservations.ToList();
return lstReservation;
}
catch (Exception e)
{
throw e;
}
}

我的 BLL 函数

public static List<DataAccess.Reservation> GetListReservation()
{
try
{
List<DataAccess.Reservation> lstToReturn = new List<Reservation>();
lstToReturn = GetListReservation();
return lstToReturn;
}
catch (Exception e)
{
throw e;
}
}

我如何在我的 UI 中调用我的 BL 函数:

var lstRes = Manage.GetListReservation();

最佳答案

从您问题的详细信息来看,您似乎正在使用 Traditional N-Layer Architecture .在这个架构中,UI层依赖于BLL,而BLL又依赖于DAL。那应该是您的引用结构:UI 项目引用 BLL 项目,BLL 项目引用 DAL 项目。

这对您来说意味着您不能在您的 UI 中使用 DAL 中的类; UI 不应该知道 DAL 的实现,因为 DAL 可能会改变(比如从 SQL Server 数据库移动到 Oracle 数据库)。因此,为了从 DAL 获取数据到 BLL,您需要在 BLL 中创建一个模型类,并将 DAL 类中的所有数据映射到它。

例如,在您的 BLL 中,您需要添加一个 ReservationModel 类,它将映射到 DAL 中的 Reservation 类:

public class ReservationModel
{
// Add the same properties that are in the Reservation class in
// the DAL to this class. The properties below are just for example
public int ReservationId { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int CustomerId { get; set; }
}

然后在 BLL 中,更改 GetListReservation() 方法以返回一个 ReservationModel,其中包含从 DAL 中的 Reservation 类映射的所有数据:

public static List<ReservationModel> GetListReservation()
{
var reservationModels = new List<ReservationModel>();

foreach (var reservation in SelectListReservation())
{
reservationModels.Add(new ReservationModel
{
// Again, these are made-up properties for illustration purposes
ReservationId = reservation.ReservationId,
StartDate = reservation.StartDate,
EndDate = reservation.EndDate,
CustomerId = reservation.CustomerId
});
}

return reservationModels;
}

关于c# - 将 LINQ 与不同层一起使用意味着我无法访问特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53783297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com