小编Gra*_*ler的帖子

存储值> 24:00:00的.Net Timespan的正确SQL类型是什么?

我试图TimeSpan在SQL Server 2008 R2中存储.Net .

EF Code First似乎建议它应该存储为Time(7)SQL中的一个.

但是TimeSpan.Net可以处理比24小时更长的时间.

TimeSpan在SQL服务器中处理存储.Net的最佳方法是什么?

.net sql-server timespan

185
推荐指数
7
解决办法
9万
查看次数

为什么代码的"复制和粘贴"很危险?

有时,我的老板会向我们抱怨:

为什么我们需要这么长的时间来实现一个功能?

实际上,该功能之前已经在另一个应用程序中实现,您只需要从那里复制和粘贴代码.成本应该很低.

这真的是一个难题,因为在我看来,复制和粘贴代码并不是一件简单的事情.

你有什么理由向你的非技术老板解释这个吗?

copy-paste dry

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

如何将超过24小时的TimeSpan映射到SQL Server Code First?

我试图将TimeSpan Code First属性映射到SQL服务器.Code First似乎在SQL中将其创建为Time(7).但是.Net中的TimeSpan可以处理超过24小时的更长时间,并且我需要存储超过24小时的事件长度.使用Code First处理此问题的最佳方法是什么?

sql-server entity-framework code-first ef-code-first

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

我可以在不使用Visual Studio 2012发布的情况下使用Web Config Transform吗?

Visual Studio 2012是否支持使用特定的Web.config转换运行解决方案而无需发布?我们使用web.config更改发布时的客户端设置,并希望在本地测试它们.

web-config visual-studio-2012

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

如何将所有解析请求记录到Autofac容器?

我试图在遗留代码库中调试一些问题.我认为是由于抛出异常引起的,因为无法从Autofac容器中解析某些内容.但是我觉得异常被埋没在某个地方,我没有看到根本原因.我确信从控制器请求的东西要么找不到,要么可以找到的东西有一个无法满足的依赖.没有任何保护条款等,所以我认为我得到一个空参考问题.为了尝试调试这个,我希望看到容器中找不到的所有请求.

无论如何都要记录Autofac无法解决的所有请求?或者只是将所有请求记录到容器中?

logging dependency-injection autofac

24
推荐指数
3
解决办法
6183
查看次数

我可以重构模型视图查询处理程序吗?

在我们的MVC应用程序中,作为参数的所有读取操作都采用实现以下内容的查询:

public interface IQuery<out TResponse> { }
Run Code Online (Sandbox Code Playgroud)

在该操作中,查询被传递到总线,该总线定位处理程序并返回视图模型.所以控制器现在看起来像这样:

   public ActionResult Edit(DetailsQuery query)
    {
        var model = mediator.Request(query);
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

实际上只是将查询传递给我们的调解器并返回结果.我们有数百个看起来像这样的动作.有一些奇怪的动作可以做一些有条件的事情(我会保留原样),但其余部分则是一次又一次的样板.我们有超过一百个不同的查询

我怎样才能将其重构为更明确的内容?我想移动到模型视图查询处理程序而不是样板控制器操作,只需将查询交给总线并将模型返回到View.

我应该在MVC中看到哪些扩展点?有效地而不是必须编写动作处理程序 - 只需要一些自动方式将强类型查询连接在一起并获取正确的ViewModel.

如果我能?我是不是该?我只是不喜欢看到数百个看起来都一样的动作.

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

22
推荐指数
1
解决办法
1387
查看次数

是否可以从收集中删除子项并解决SaveChanges上的问题?

我们正在使用Entity Framework Code First和Foreign Key关系.我们正在调查处理从应用程序中的实体ICollection中删除对象的方法.

当我们有一个具有子关系的实体时,我们可以使用Add方法将对象直接添加到他们的ICollection中.现在,当您使用删除时,您会收到错误

发生System.InvalidOperationException消息=操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

我理解这是因为集合上的Remove仅通过归零外键来删除关系.我们想在我们的实体中编写业务逻辑并允许删除.

所以从它的Repostiory中取出root实体,例如OrderRepository的Order然后调用实体的一些特定方法,例如,Order.AddOrderline(Orderline orderline)这将OrderLine添加到Ordersvirtual ICollection<OrderLine> OrderLines

但是,我们无法编写代码,Order.CancelOrderline(int orderLineId)因为只是从ICollection中删除会导致存储更改出错.

似乎没有任何方法可以通过操纵对象集合来实现这一点.显然我们可以直接从Context中删除.但是我想把它作为实体的一部分.我们可以在Entity Framework的SaveChanges事件中清除没有外键的某些实体吗?显然需要告诉EF如果它们具有空外键,可以删除哪些实体.

我们目前正在使用存储库模式,因此控制器无法访问上下文.我显然可以在Order存储库上使用OrderLine存储库或删除OrderLine方法.然而,只是想知道是否有可能在实体上编写代码而不引用持久性机制.

思考?我们这一切都错了吗?其他ORM是否允许您从Child Collections中删除?

persistence entity-framework repository-pattern entity-framework-4

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

这是如何使用CloudConfigurationManager设置Context Connection String的?

我希望使用CloudConfigurationManager,以便我可以利用Azure配置文件.我想使用连接字符串我在Cloud.cscfg中添加了一个字符串来配置实体框架上下文.

我正在配置我的上下文

public DomainContext()
    : base("ContextConnectionString")
Run Code Online (Sandbox Code Playgroud)

这是从Web.config获取ContextConnectionString

我将Context Constructor更改为this

public DomainContext()
    : base(CloudConfigurationManager.GetSetting("ContextConnectionString"))
Run Code Online (Sandbox Code Playgroud)

它现在有效.

是否有更优雅的方式告诉我的上下文构造函数首先使用Azure cscfg?

azure azure-configuration

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

Resharper导航到通用接口的具体实现?

无论如何,让Resharper导航到特定类型的通用接口的具体实现.

例如ICommandHandler<T>,找到具体实施?我可以让Resharper显示所有实现,ICommandHandler但不允许我轻松地实现类型T的实现.我们有数百个处理程序,导航越来越慢.

我们正在使用Resharper 7.1

更新

例子包括:

public class AddStockRequestLineItemCommandHandler : ICommandHandler<AddStockRequestLineItemCommand>
public class RemoveStockRequestLineItemCommandHandler : ICommandHandler<RemoveStockRequestLineItemCommand>
public class StockRequestFufillingUpdateCommandHandler : ICommandHandler<StockRequestFufilingUpdateCommand>
Run Code Online (Sandbox Code Playgroud)

在MVC控制器构造函数中的用法如:

public StockRequestController( ICommandHandler<RemoveStockRequestLineItemCommand> stockRequestLineItemRemoveHandler)
{
    this.stockRequestLineItemRemoveHandler = stockRequestLineItemRemoveHandler;
} 
Run Code Online (Sandbox Code Playgroud)

我希望能够点击ICommandHandler<RemoveStockRequestLineItemCommand>并转到实施课程RemoveStockRequestLineItemCommandHandler

resharper visual-studio

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

Automapper - 忽略IEnumerable <SelectListItem>的所有项目

无论如何,Automapper是否会忽略某种类型的所有属性?我们正在尝试通过验证Automapper映射来提高代码的质量,但是必须.Ignore()为所有IEnumerable<SelectListItem>总是手动创建的代码设置,这会产生摩擦并减慢开发速度.

有任何想法吗?

创建映射后可能的想法:

    var existingMaps = Mapper.GetAllTypeMaps();
    foreach (var property in existingMaps)
    {
        foreach (var propertyInfo in property.DestinationType.GetProperties())
        {
            if (propertyInfo.PropertyType == typeof(List<SelectListItem>) || propertyInfo.PropertyType == typeof(IEnumerable<SelectListItem>))
            {
                property.FindOrCreatePropertyMapFor(new PropertyAccessor(propertyInfo)).Ignore();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

automapper

12
推荐指数
1
解决办法
3080
查看次数