首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ2SQL + PLINQO:如何处理这样简单的情况?

LINQ2SQL + PLINQO:如何处理这样简单的情况?
EN

Stack Overflow用户
提问于 2009-11-26 13:47:56
回答 2查看 785关注 0票数 1

我是PLINQO的新手,我对LINQ2SQL相当陌生,我正在添加一个新DAL (称为DAL2),与我们现有的DAL并行。我们的想法是开始对我们添加的每一个新事物使用linq2sql,然后慢慢开始将旧DAL的使用转移到新的DAL2上。

众所周知,DLINQ适用于简单的事物,但是在更复杂的场景中(many2many、分离的对象等等)。问题立即出现,新的需要黑客围绕它。PLINQO (与CodeSmish一起)伸出援手,增加了所有必要的结构和工具,使其更加可用。到现在为止还好。

现在我已经有了我的DAL2 (我正在使用经理)。它“起作用”。但我有点怀疑。

我理解返回由以下查询组成的对象:

代码语言:javascript
复制
select name,  Count(*) as Total from SomeTable 

…在大多数DB应用程序中并不是一个奇怪的场景。这个查询是一个简单的例子,说明什么是一个很好的匿名类型。

现在,想象一下像这样的表结构。

代码语言:javascript
复制
Tag (1) <—> (n) PatientTag (n) <—> (1) Patient

这样做的目的是知道每个标签上有多少病人。一个简单的内部连接可以用SQL修复这个问题,在标记和病人标记之间。我甚至不需要去看病人的桌子。(我只需要数一下)。

毕竟,我想要的只是举个例子:

TAG1,33岁

TAG2,21岁

TAG3,6

etc…

假设我成功地创建了一个执行此任务的linq2sql查询:

代码语言:javascript
复制
   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 2/Helper/TagNameTotal.cs中(举一个例子)

( 2)在混血/帮助者/TagNameTotals.cs中?

( 3)上述任何一项都没有?(或者两者之一?)

如果上面的不是是真的,那么我在想什么呢?

如果有人想将查询结果传递给UI并对其进行修改,这不是很正常吗?假设在上面的例子中,我想在UI中更改TagName (也许这不是最好的例子,但它适用)。

不好意思,但是我仍然觉得整个LINQ2SQL在一个网络项目或一个简单的应用程序之外使用时还有点粗糙。这些都是我们永远使用ADO.NET (以及之前的记录集)所做的基本工作。

进行select/join/group/crazySQL,修改,将更改提交回。

PLINQO是很好的,因为它消除了LINQ2SQL粗糙形式的麻烦(很多很多,被停用,上下文再生,缓存等等),但是它仍然是LINQ,所以必须应用DLINQ实践。

我遗漏了什么?

注意:不要将PLinq与PLinqO混淆。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-01 07:33:27

我已经在代码匠社区上回复了这篇文章,但是我想到了这一点,并偶然发现了这篇文章。你可能会发现这篇文章有些帮助

基本上,您创建一个mini类,并使用let语句定义一个子集,然后在需要时延迟加载它.

票数 2
EN

Stack Overflow用户

发布于 2009-11-26 14:21:11

这听起来就像一个无耻的PLinqO产品插头。我希望这不是你的意图。我看了PLinqO,也许会得到它,除非你必须购买CodeSmith才能得到它。不用了谢谢。

我使用L2S构建了一个功能齐全的三层平台,我遇到并处理了与M:M关系、独立实体(特别是更新)、上下文处理等相关的问题,而不使用PLinqO和任何其他第三方工具。一旦您了解了L2S的工作原理,就可以这样做。我认为我们的解决方案相当优雅,我们的性能也相当好。

对于阅读这篇文章的人,如果你想在第三方工具上花钱,请投资于LinqPad和Linqer。你可以拿起这两种工具,总价不到75美元;它们太棒了。我和他们都没有关系。

兰迪

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1803761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档