Linq to SQL问题

时间:2012-12-18 22:05:56

标签: sql linq

我创建了一个类库,将一个linq添加到SQL类并拖动一些表。 创建另一个类库为上面的项目添加一个ref并为GetCustomers创建一个简短的函数(dim query = from c c in customers select c return c.toList) 然后我添加一个Vb .Net Web应用程序并将ref添加到创建的第二个类库中并调用GetCustomers方法。 我收到一条错误消息,告诉我要添加一个包含linq to SQL数据模型的类的引用,这似乎不对。

我如何才能正确分离这些图层?我很感激Vb .Net中的文章或任何代码。

由于

3 个答案:

答案 0 :(得分:1)

由于数据类是在Linq to SQL类库中定义的,因此Web应用程序需要对它进行引用才能知道这些类是什么。

要真正分隔图层,您需要在第二个类库中use the Linq to SQL classes to create separate transfer objects

automapper这样的工具在那里真的很有帮助。

答案 1 :(得分:1)

需要显式引用您的LINQ to SQL模型才能使用它们。您无法通过其他参考推断参考。

解决这个问题的方法是使用DTO和视图模型。

  • 在此方案中,Web应用程序在中间层调用存储库
  • 中间层调用实体的数据层
  • 数据层为中间层提供实体
  • 中间层将实体转换为数据传输对象并将其返回到Web应用程序
  • web app使用数据传输对象将实体状态传递给中间层
  • 网络应用程序将DTO翻译为查看演示模型。

这是一个非常概括的概述。基本上每个层对数据的外观都有自己的想法,并且与另一个层有关于如何翻译的合同。其他人可以比我更好地解释它。 This是关于N层架构的相当不错的文章。

答案 2 :(得分:0)

听起来你的函数可能会返回值类型List(Of Customers) - 在这种情况下,Customers类型在你的第一个类库中定义。

假设您的项目被称为“数据”,“业务”和“UI”,如果您不希望您的UI项目引用Data类库,那么业务项目将不得不复制或显示结果从数据到业务中定义的表单,以便UI可以使用它。否则,UI必须仅为类型定义引用Data,即使它最终只对业务进行调用。