我创建了一个类库,将一个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中的文章或任何代码。
由于
答案 0 :(得分:1)
由于数据类是在Linq to SQL类库中定义的,因此Web应用程序需要对它进行引用才能知道这些类是什么。
要真正分隔图层,您需要在第二个类库中use the Linq to SQL classes to create separate transfer objects。
像automapper这样的工具在那里真的很有帮助。
答案 1 :(得分:1)
需要显式引用您的LINQ to SQL模型才能使用它们。您无法通过其他参考推断参考。
解决这个问题的方法是使用DTO和视图模型。
这是一个非常概括的概述。基本上每个层对数据的外观都有自己的想法,并且与另一个层有关于如何翻译的合同。其他人可以比我更好地解释它。 This是关于N层架构的相当不错的文章。
答案 2 :(得分:0)
听起来你的函数可能会返回值类型List(Of Customers) - 在这种情况下,Customers类型在你的第一个类库中定义。
假设您的项目被称为“数据”,“业务”和“UI”,如果您不希望您的UI项目引用Data类库,那么业务项目将不得不复制或显示结果从数据到业务中定义的表单,以便UI可以使用它。否则,UI必须仅为类型定义引用Data,即使它最终只对业务进行调用。