小编L-F*_*our的帖子

LINQ:结合join和group by

我有一个结合了连接和组的查询,但我遇到了问题.查询如下:

 var result = from p in Products                         
 join bp in BaseProducts on p.BaseProductId equals bp.Id                    
 group p by p.SomeId into pg                         
 select new ProductPriceMinMax { 
       SomeId = pg.FirstOrDefault().SomeId, 
       CountryCode = pg.FirstOrDefault().CountryCode, 
       MinPrice = pg.Min(m => m.Price), 
       MaxPrice = pg.Max(m => m.Price),
       BaseProductName = bp.Name  <------ can't use bp. 
 };
Run Code Online (Sandbox Code Playgroud)

如您所见,它将Products表与BaseProducts表连接,并在Product表的id上加入组.但是在生成的ProductPriceMinMax中,我还需要BaseProducts表的一个属性:bp.Name,但它不知道bp.

知道我做错了什么吗?

谢谢!

c# linq join group-by linq-to-sql

51
推荐指数
3
解决办法
9万
查看次数

在WPF应用程序中集成帮助

在WPF应用程序中集成本地(因此不是联机)帮助的可能方法是什么?它更像是手册,但我想以某种方式整合它.

编辑:刚刚找到http://wordtoxaml.codeplex.com,我会尝试那个.它将word文档转换为xaml,我可以在WPF中显示它.

编辑2:我找到了一个有效的解决方案:用word编写手册,另存为XPS,并使用https://web.archive.org/web/20111116005415/http://www.umutluoglu.com/english/post/显示一十二分之二千零八/ 20 /显示-XPS-文档与-的DocumentViewer -控制-在-WPF.aspx

wpf

16
推荐指数
2
解决办法
2万
查看次数

生成字符串列表的所有组合

我想生成一个字符串列表的所有可能组合的列表(它实际上是一个对象列表,但为了简单起见,我们将使用字符串).我需要这个列表,以便我可以在单元测试中测试每个可能的组合.

例如,如果我有一个列表:

  var allValues = new List<string>() { "A1", "A2", "A3", "B1", "B2", "C1" }
Run Code Online (Sandbox Code Playgroud)

我需要一个List<List<string>>所有组合,如:

  A1
  A2
  A3
  B1
  B2
  C1
  A1 A2
  A1 A2 A3
  A1 A2 A3 B1
  A1 A2 A3 B1 B2
  A1 A2 A3 B1 B2 C1
  A1 A3
  A1 A3 B1
  etc...
Run Code Online (Sandbox Code Playgroud)

递归函数可能是获得所有组合的方法,但它似乎比我想象的更难.

有什么指针吗?

谢谢.

编辑:两个解决方案,有或没有递归:

public class CombinationGenerator<T>
{
    public IEnumerable<List<T>> ProduceWithRecursion(List<T> allValues) 
    {
        for (var i = 0; i < (1 << allValues.Count); i++)
        {
            yield return ConstructSetFromBits(i).Select(n => allValues[n]).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# math combinations

16
推荐指数
1
解决办法
2万
查看次数

架构:简单的CQS

我正在考虑将CQS应用于我的ASP.NET MVC网站,但这只是一件非常简单的事情.我不是指CQRS,因为我想为查询和命令部分使用相同的数据源,因此我不需要事件源和其他更复杂的模式.

所以,我的想法是:

  • 使用相同的数据库进行查询和命令部分
  • 对于查询部分,使用实体框架和WCF数据服务公开数据库视图,以便将特定视图返回给客户端,查询数据变得非常容易
  • 对于命令部分,使用实体框架和单向WCF服务公开数据库表,并使用DDD原则.

我想要实现的主要是:

  • 由单向服务操作执行并由富域模型处理的简单命令,客户端只需传递执行命令所需的数据
  • 灵活查询简单视图,专为客户端的特定UI设计

这有意义吗?

c# command domain-driven-design cqrs

13
推荐指数
1
解决办法
2226
查看次数

CQRS和主键:guid与否?

对于我的项目,这是一个潜在的大型网站,我选择将命令界面与查询界面分开.因此,提交命令是单向操作,不会返回结果.这意味着客户端必须提供密钥,例如:

service.SubmitCommand(new AddUserCommand() { UserId = key, ... });
Run Code Online (Sandbox Code Playgroud)

显然我不能使用int作为主键,所以Guid是一个合乎逻辑的选择 - 除了我到处读到它对性能的影响,这让我感到害怕:)

但后来我也读到了关于COMB Guids,以及它们如何提供Guid的优势,同时仍然具有良好的性能.我还在这里找到了一个实现:Linq-to-Sql中的顺序GUID?.

所以在我做出这个重要决定之前:有人有这方面的经验吗?

非常感谢!

路德

c# performance guid key cqrs

11
推荐指数
3
解决办法
2069
查看次数

保存域实体更改

这是一个真实的例子,它将引出我的问题:我有一个AddCommentToArticleCommand,它有一个ArticleId,评论文本和电子邮件地址.这个命令:

  • 使用文章存储库来获取文章(这是域实体)
  • 如果文章存在,则调用article.AddComment(commentText,emailAddress),它将注释添加到文章中并在不能时抛出异常(由于电子邮件格式无效,文章已关闭,评论未填写或太长等. ..)
  • 但现在我不知道保存添加的评论的最佳方法是什么?

我应该像articleRepository.Save(文章)那样做吗?但是,如果只添加评论,为什么要保存文章呢?或者我可以做一些像articleRepository.SaveComment(评论),只会保存评论?或者你会采取什么方法?

谢谢!

c# entity domain-driven-design repository cqrs

11
推荐指数
1
解决办法
3065
查看次数

故障或不故障

我正在与同事讨论何时抛出错误以及何时不在WCF服务中抛出错误.

有一种观点认为,当服务操作由于某些错误而无法完成工作时,我们只会抛出错误; 由于它,某些东西可能处于无效状态.所以,举一些例子:

  • ValidateMember(字符串名称,字符串密码,字符串国家/地区) - >如果未传递强制参数,则会引发错误,因为验证本身无法执行; - >如果发生了一些内部错误就会抛出错误,比如数据库已关闭 - >会在所有其他情况下返回状态合同,指定验证结果(MemberValidated,WrongPassword,MemberNotKnown,...)

  • GetMember(int memberId) - >只会在出现故障时抛出错误,在所有其他情况下它会返回成员,如果没有找到则返回null

另一种意见是我们也应该在GetMember找不到该成员时抛出错误,或者在ValidateMember的情况下密码错误.

你怎么看?

architecture wcf faults exception

10
推荐指数
1
解决办法
769
查看次数

多语言WPF应用程序的方法

似乎有很多方法可以在WPF应用程序中实现多种语言.但是我想了解一些关于我应该使用以下要求的方法的更多信息:

  • 它是一个PRISM应用程序,因此许多独立的模块(程序集)协同工作.我希望每个程序集都有自己的UI元素翻译.
  • 我需要一个简单的方法,不需要工具来生成东西
  • 应该仍然可以使用blend来设计UI
  • 可选择能够切换语言而无需重新启动应用程序(不是交易破坏者)

有人可以建议我如何实现这一目标吗?

谢谢!

wpf multilingual prism

10
推荐指数
1
解决办法
1928
查看次数

ASP.NET MVC应用程序的体系结构

我正在分析一个可能很大的网站,我有很多问题.

该网站将使用剃刀视图引擎在ASP.NET MVC 3中编写.在大多数示例中,我发现控制器直接使用底层数据库(使用域/存储库模式),因此中间没有WCF服务.我的第一个问题是:这个架构是否适合拥有大量流量的大型网站?总是可以对网站进行负载平衡,但这是一个好方法吗?或者我应该使网站使用与数据交互的WCF服务?

问题2:我想采用CQS原则,这意味着我想将查询与指挥部分分开.因此,这意味着查询部分将具有与命令部分不同的模型(针对视图进行优化)(针对业务意图进行优化并且仅包含完成命令所需的属性) - 但两者都作用于同一数据库.你认为这是个好主意吗?

感谢您的建议!

c# architecture asp.net-mvc cqrs asp.net-mvc-3

10
推荐指数
1
解决办法
1373
查看次数

使用属性验证

我有,比方说,这个简单的课程:

public class User
{
  [Required(AllowEmptyStrings = false, ErrorMessage="EmailIsRequired"]
  public string EmailAddress { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道如何在System.ComponentModel.DataAnnotations命名空间中使用Validator.TryValidateProperty和Validator.TryValidateObject.为了使其工作,您需要要验证的对象的实际实例.

但是现在,我想要在没有User类实例的情况下验证某个值,例如:

TryValidateValue(typeof(User), "EmailAddress", "test@test.com");
Run Code Online (Sandbox Code Playgroud)

我的目标是在实际必须实例化对象本身之前测试一个值(原因是我只允许创建有效的域实体).所以实际上我想在类而不是实例上使用验证属性.

有什么想法可以做到吗?

谢谢!

编辑:同时我决定不使用数据注释,而是使用http://fluentvalidation.codeplex.com,以便验证移出实体之外.这样,可以从实体内部以及我的命令处理程序中触发验证.由于流利的符号,验证本身看起来更具可读性.

c# validation domain-driven-design data-annotations asp.net-mvc-3

10
推荐指数
1
解决办法
2万
查看次数