我是PLINQO的新手,我是LINQ2SQL的新手,我正在与旧的现有DAL并行添加一个新的DAL(称为DAL2)。我们的想法是开始使用linq2sql为我们添加的每个新东西,并慢慢开始将旧的DAL用法移动到新的DAL2。
众所周知,DLINQ适用于简单的事情,但在更复杂的情况下(许多人,脱离的对象等),问题立即出现,并且需要对其进行破解。 PLINQO(与CodeSmish一起)拯救并添加了所有必要的结构和工具,使其更加实用。到现在为止还挺好。
现在我已经拥有了DAL2(我正在使用Managers)。有用”。但我有些疑惑。
我理解返回由以下查询组成的对象:
select name, Count(*) as Total from SomeTable
...在大多数数据库应用程序中并不是一个奇怪的场景。查询是一个很好的匿名类型的简单示例。
现在暂时想象一下像这样的表结构。
Tag (1) <—> (n) PatientTag (n) <—> (1) Patient
这个想法是知道每个标签有多少患者。一个简单的内部联接将使用SQL在标记和患者标记之间进行修复。我甚至不需要访问Patient表。 (我只需要点数)。
毕竟,我想要的只是例如:
TAG1,33
TAG2,21
TAG3,6
等...
假设我设法创建一个执行它的linq2sql查询:
var result1 = from pt in dc.PatientTag
join t in dc.Tag on pt.TagId equals t.TagId
select new { TagName = t.TagName };
var result2 = from q in result1
group q by q.TagName into gp
select new { TagName = gp.Key, Total = gp.Count() };
(我是LINQ的新手,所以如果上述情况不好,原谅我缺少“LINQissm”)
鉴于我不能返回那个“新的”匿名类型(除非我去寻找不是我的意图的对象和反射),我假设我必须创建一个“帮助器”类来包含这两个东西(名称和总数) 。我们的想法是,上面的代码应位于数据层或业务层中的某个位置,并且UI代码中的不是。
现在真正的问题是:
如果上述情况属实,如果我想将结果(或结果数组)返回到UI(正确显示和处理),我应该在哪里创建“帮助器”?
1)在DAL2 / Helper / TagNameTotal.cs中(举个例子)
2)在BLayer / Helpers / TagNameTotals.cs?
中3)以上都没有? (或者?)
如果以上不为真,我的错误思考是什么?
当有人想将查询结果传递给用户界面并进行修改时,这是不正常的?在上面的示例中,我想在UI中更改TagName(可能这不是最好的示例,但它适用)。
对不起,但我发现整个LINQ2SQL在webproject或简单应用程序之外使用时有点粗糙。这些是我们在ADO.NET(以及之前的记录集)中一直在做的基本事情。
制作一个select / join / group / crazySQL,修改,提交更改。
PLINQO很好,因为它以粗糙的形式消除了LINQ2SQL的麻烦(许多2,deatached,上下文重新生成,缓存等),但它仍然是LINQ,所以DLINQ实践必须适用。
我错过了什么?
注意:不要将PLinq与PLinqO混淆。
答案 0 :(得分:2)
我在codesmith community回复了这篇文章,不过我正在考虑这个问题,并且发现了这篇文章。您可以找到this post some help
基本上你创建一个迷你类并使用 let 语句定义一个子集,然后在需要时延迟加载它....
答案 1 :(得分:0)
这听起来像是PLinqO产品的无耻插头。我希望这不是你的意图。我看了PLinqO,也许除非你必须购买CodeSmith才能得到它。不,谢谢。
我使用L2S构建了一个功能齐全的3层平台,我遇到并处理了与M:M关系,分离实体(尤其是更新),上下文处理等相关的问题,而没有使用PLinqO和任何其他第三方工具。一旦了解了L2S的工作原理,就可以完成它。我认为我们的解决方案非常优雅,性能非常好。
对于那些阅读本文的人来说,如果你想在第三方工具上花钱,可以投资LinqPad和Linqer。您可以以低于75美元的价格购买这两种工具;他们很棒。而且我与他们中的任何一个都无关。
兰迪