小编Ken*_*rdt的帖子

条件生成器方法链接流畅的接口

我想知道在对象中使用方法链接流畅的界面中实现.When条件的最佳方法是什么?Builder

例如,我将如何实现以下示例中的.WithSkill().When()方法:

var level = 5;

var ninja = NinjaBuilder
    .CreateNinja()
    .Named("Ninja Boy")
    .AtLevel(level)
    .WithShurikens(10)
    .WithSkill(Skill.HideInShadows)
        .When(level > 3)
    .Build()
Run Code Online (Sandbox Code Playgroud)

更新 - 可以在此处找到示例解决方案.

c# design-patterns fluent-interface builder method-chaining

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

Automapper:使用Entity Framework 4 Proxy Pocos在集合上映射继承和抽象基类的问题

我在使用AutoMapper(这是一项出色的技术)时遇到了一个问题,即将业务对象映射到DTO,在DTO中我从集合中的抽象基类继承.

这是我的对象:

abstract class Payment
class CashPayment : Payment
class CreditCardPayment : Payment
Run Code Online (Sandbox Code Playgroud)

我还有一个发票对象,其中包含一系列付款,如下所示:

    public class Invoice
    {
       ... properties...

       public ICollection<Payment> Payments { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我还有每个这些对象的相应DTO版本.

DtoInvoice对象定义为:

[DataContract]
public class DtoInvoice
{
   ...properties...

   [DataMember]
   public List<DtoPayment> Payments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的Mapper定义:

Mapper.CreateMap<Invoice, DtoInvoice>();

Mapper.CreateMap<Payment, DtoPayment>()
  .Include<CashPayment, DtoCashPayment>()
  .Include<CreditCardPayment, DtoCreditCardPayment>();

Mapper.CreateMap<CashPayment, DtoCashPayment>();
Mapper.CreateMap<CreditCardPayment, DtoCreditCardPayment>();
Run Code Online (Sandbox Code Playgroud)

执行映射的代码如下所示:

var invoice = repo.GetInvoice(invoiceId);

var dtoInvoice = Mapper.Map<Invoice, DtoInvoice>(invoice);
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我的发票对象包含特定付款的集合(比如1现金和1张信用卡),当映射器尝试映射它们时,我会收到错误,即无法创建抽象类付款.如果我从Payment对象中删除了abstract关键字,那么代码可以工作,但我只收到Payment对象的集合,我没有得到他们的特定对象(现金和信用卡付款).

所以问题是:如何让AutoMapper映射特定的支付类型而不是基类?


更新

我做了一些挖掘,并认为我发现了一个问题,但我不确定如何使用AutoMapper解决这个问题.我认为这更像是EF的事情,而不是AutoMapper的错.:-)

在我的代码中,我使用延迟加载的Entity Framework 4代理POCO.

因此,当我尝试映射从EF返回的实体(代理POCO)时,它会获得如下滑稽的类型:

System.Data.Entity.DynamicProxies.CashPayment_86783D165755C316A2F58A4343EEC4842907C5539AF24F0E64AEF498B15105C2
Run Code Online (Sandbox Code Playgroud)

所以我的理论是,当AutoMapper尝试将CashPayment映射到DtoCashPayment并且传入的付款属于代理类型时,AutoMapper将其视为"不匹配",然后映射通用付款类型.但由于Payment是一个抽象类AutoMapper炸弹,其中包含"System.InvalidOperationException:无法创建抽象类的实例".例外.

所以问题是:我有没有办法使用AutoMapper将EF POCO代理对象映射到Dtos.

.net collections entity-framework poco automapper

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

EF4 Poco问题映射类型相同名称相同程序集不同的命名空间

我遇到了EF4Proxy Pocos的问题.

我在同一个程序集中有两个具有相同名称的类但名称空间不同:

QuoteModels.CashPayment
OrderModels.CashPayment
Run Code Online (Sandbox Code Playgroud)

这编译很好但在运行时EF抛出以下异常:

指定的架构无效.错误:\ r \n由于多个CLR类型与EDM类型"CashPayment"匹配,因此CLR类型到EDM类型的映射不明确.以前发现CLR类型'QuoteModels.CashPayment',新发现的CLR类型'OrderModels.CashPayment'

是否有一种解决方法可以在具有不同命名空间的同一程序集中使用具有相同名称的类来与Ef4一起使用?

我是否必须给他们不同的名字或将他们移到另一个集会?

c# namespaces poco entity-framework-4

23
推荐指数
2
解决办法
7798
查看次数

如何在TFS 2010中更新当前的sprint团队查询?

我们正在使用VS 2010TFS 2010以及Microsoft Scrum模板.

我们使用当前Sprint团队查询,如Sprint Backlog查询.

问题是当我们转向冲刺2时,"当前冲刺"仍然指向冲刺1.

有没有办法告诉TFS我们现在正处于sprint 2并且让查询使用变量来运行而不是硬编码sprint?

例如:如果您查看下面的屏幕截图,您会注意到查询的定义使用了一个名为"@Project"的变量作为团队项目.有没有办法为sprint提供变量?

替代文字

tfs scrum tfs2010 tfs-process-template

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

如何在IBM System i Access for Windows GUI工具中调用存储过程

我想测试在AS400系统上运行的DB2存储过程.

我安装了IBM System i Access for Windows,可以对DB2数据库运行SQL命令.

我的问题是:执行存储过程的语法是什么,该存储过程接受参数并将结果作为输出参数返回并将值打印到屏幕上?

只是为了澄清:我不是问如何在代码中调用proc.我想执行proc并在gui工具中查看结果(类似于SQL Enterprise Manager).

db2 stored-procedures ibm-midrange

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

捆绑从CDN服务的多个CSS?

我们正在寻找到新的捆绑的功能,ASP.NET MVC 4,如果有任何优势,想知道捆绑CSS文件从CDN服务

有没有办法捆绑从ASP.NET MVC 4中的CDN提供的多个文件?这不起作用:

var cdnCssPath = "http://MyCdn/css/";    
bundles.Add(new StyleBundle("~/Content/css", cdnCssPath)
            .Include("~/Content/site.css")
            .Include("~/Content/Test1.css")
            .Include("~/Content/Test2.css")
            .Include("~/Content/Test3.css")
            );
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

cdn asp.net-mvc-4 bundling-and-minification

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

ASP.NET MVC4捆绑CSS有些在CDN上有些本地服务器吗?

我正在研究ASP.NET MVC4 System.Web.Optimization捆绑,并想知道如何从CDN其他本地服务器提供一些CSS文件

那可能吗?

它看起来像bundles.UseCdn = true在集合级别而不是单个包的设置.

任何指导将不胜感激.

css cdn asp.net-mvc-4 bundling-and-minification asp.net-optimization

11
推荐指数
2
解决办法
7008
查看次数

IIS Express是否支持调试经典ASP?

我最近安装了Visual Studio 2010 SP1 BETA,ASP.NET MVC 3 RC2IIS Express.

我成功地使用IIS Express项目中运行了一个MVC 3项目以及经典的ASP页面.

我想知道在使用IIS Express时是否有办法在Visual Studio中使用断点设置经典ASP 调试

如果是这样,有没有关于如何做到这一点的教程/帖子?

asp-classic visual-studio-debugging iis-express asp.net-mvc-3

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

使用RavenDB存储上传的文件数据

使用RavenDB存储文件数据的当前最佳实践是什么?(CDN或RavenDB附件)

我一直在关注Rob Ashton的优秀演示应用程序RavenDB Photo Gallery Project.在演示项目中,他将文件存储为RavenDB附件,但似乎提到这不是最佳实践.当前版本的RavenDB对此有何最新想法?

file-upload cdn attachment ravendb

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

使用Ninject 2.2 +全局动作过滤器进行MVC 3依赖注入

我试图使用ASP.NET MVC 3和Ninject 2.2将记录器对象注入自定义ActionFilterAttribute.

如果我使用自定义属性标记每个控制器,我能够使其工作.

但是,如果我从控制器中删除属性修饰并尝试使用全局操作过滤器,则无法使其工作.

这是代码:

在App_Start下 - NinjectMVC3.cs

using NinjectTest.Abstract;
using NinjectTest.Concrete;

[assembly:      WebActivator.PreApplicationStartMethod(typeof(NinjectTest.App_Start.NinjectMVC3), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(NinjectTest.App_Start.NinjectMVC3), "Stop")]

namespace NinjectTest.App_Start
{
using Microsoft.Web.Infrastructure.DynamicModuleHelper;

using Ninject;
using Ninject.Web.Mvc;

public static class NinjectMVC3 
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    /// <summary>
    /// Starts the application
    /// </summary>
    public static void Start() 
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
        bootstrapper.Initialize(CreateKernel);
    }

    /// <summary>
    /// Stops the application.
    /// </summary>
    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    /// <summary>
    /// Creates the kernel that …
Run Code Online (Sandbox Code Playgroud)

dependency-injection ninject action-filter asp.net-mvc-3

7
推荐指数
1
解决办法
3685
查看次数

有没有办法在SQL Server 2008中以可视方式显示数据库关系图中的视图?

我想在SQL Server 2008中创建一个数据库图,并在图中有一个View.有没有办法做到这一点?

sql-server view sql-server-2008 database-diagramming

6
推荐指数
1
解决办法
8456
查看次数

使用Ninject 2.2的MVC 3依赖注入将全局操作过滤器绑定到区域中的所有控制器

我能够使用ASP.NET MVC 3和Ninject 2.2注入Logger对象到自定义ActionFilterAttribute感谢我在此得到的帮助.

现在我想将自定义ActionFilterAttribute仅绑定到特定区域中的所有控制器.

我能够开始使用以下绑定,但它只处理某个区域中的一个控制器.我希望我的代码绑定到特定区域中的所有控制器.有任何想法吗?

/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<ILogger>().To<Log4NetLogger>().InRequestScope();
    kernel.BindFilter<TestLoggingAttribute>(
        FilterScope.Controller, 0)
            .WhenControllerType<OrganizationController>();
}
Run Code Online (Sandbox Code Playgroud)

dependency-injection ninject asp.net-mvc-areas action-filter asp.net-mvc-3

4
推荐指数
2
解决办法
1754
查看次数

DB2 - 如何使用IBM System i Access for Windows GUI Tool中的参数运行ad hoc select查询

我想使用我声明的变量在DB2 System I Navigator工具中为DB2运行一些ad hoc select语句.

例如,在SQL Server世界中,我很容易在SQL Server Management Studio查询窗口中执行此操作,如下所示:

DECLARE @VariableName varchar(50);
SET @VariableName = 'blah blah';

select * from TableName where Column = @VariableName;
Run Code Online (Sandbox Code Playgroud)

如何在IBM System I Navigator工具中执行类似的操作?

sql db2 iseries-navigator ibm-midrange

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