小编Wil*_*lly的帖子

在Windows窗体中使用具有工作单元和存储库模式的简单注入器

我正在尝试在我的Windows窗体应用程序中实现IoC.我的选择落在Simple Injector上,因为它快速而轻巧.我还在我的应用程序中实现了工作单元和存储库模式.这是结构:

DbContext:

public class MemberContext : DbContext
{
    public MemberContext()
        : base("Name=MemberContext")
    { }

    public DbSet<Member> Members { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();\
    }
}
Run Code Online (Sandbox Code Playgroud)

型号:

public class Member
{
    public int MemberID { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

GenericRepository:

public abstract class GenericRepository<TEntity> : IGenericRepository<TEntity> 
    where TEntity : class
{
    internal DbContext context;
    internal DbSet<TEntity> dbSet;

    public GenericRepository(DbContext context)
    {
        this.context = context; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework inversion-of-control repository-pattern simple-injector

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

使用EntityState.Modified的EF更新

通常我正在使用此代码

Member member = ctx.Members.Find(id);
member.Name = txtName.Text;
ctx.Entry(member).State = EntityState.Modified;
ctx.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

当我想使用实体框架更新模型时.我在SO上找到了一个不用于EntityState.Modified更新模型的示例.我试图删除该行,它仍在工作.什么是利弊使用EntityState.Modified而不使用EntityState.Modified

注意:我在WinForms中使用Entity Framework 6 Code First

entity-framework

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

为什么$ {basedir} NLog配置不起作用?

为什么我不能在生产服务器中使用$ {basedir} nlog.config?如果我使用fileName="${basedir}/logs/${shortdate}.log",nlog不会记录消息信息,但是如果我改为类似fileName="C:/logs/${shortdate}.log"它会记录消息信息

我的nlog.config:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>    
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="f" />
  </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

控制器:

public class HomeController : Controller
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    public ActionResult Index()
    {
        logger.Debug("Test NLog");
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc nlog

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

使用AutoMapper从实体映射到DTO或DTO到实体时出错

我正在使用EntityFramework作为DataLayer和DTO在层之间传输数据.我在N-Tier架构中开发Windows窗体,当我尝试在BLL中从Entity映射到DTO时:

public IEnumerable<CategoryDTO> GetCategoriesPaged(int skip, int take, string name)
{
    var categories = unitOfWork.CategoryRepository.GetCategoriesPaged(skip, take, name);
    var categoriesDTO = Mapper.Map<IEnumerable<Category>, List<CategoryDTO>>(categories);

    return categoriesDTO;
}
Run Code Online (Sandbox Code Playgroud)

我有这个错误:http: //s810.photobucket.com/user/sky3913/media/AutoMapperError.png.html

该错误表示我缺少类型映射配置或不支持的映射.我已经在UI层以这种方式使用配置文件注册了映射:

[STAThread]
static void Main()
{
    AutoMapperBusinessConfiguration.Configure();
    AutoMapperWindowsConfiguration.Configure();
    ...
    Application.Run(new frmMain());
}
Run Code Online (Sandbox Code Playgroud)

和AutoMapper配置在BLL中:

public class AutoMapperBusinessConfiguration
{
    public static void Configure()
    {
        Mapper.Initialize(cfg =>
        {
            cfg.AddProfile<EntityToDTOProfile>();
            cfg.AddProfile<DTOToEntityProfile>();
        });
    }
}

public class EntityToDTOProfile : Profile
{
    public override string ProfileName
    {
        get { return "EntityToDTOMappings"; }
    }

    protected override void Configure()
    { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework automapper

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

如何处理数据表中的复选框单击事件

我有一个布尔字段,如一个标志,表示在表中删除或不删除行.它使用复选框显示,因此如果数据已被删除,则复选框值为true,反之亦然.

下面是显示表格的代码:

<table id="tblEvent" class="display" cellspacing="0" style="width: 100%">
    <thead>
        <tr>
            <th>@Html.DisplayNameFor(model => model.PIC)</th>
            <th>@Html.DisplayNameFor(model => model.Name)</th>
            <th>@Html.DisplayNameFor(model => model.StartDate)</th>
            <th>@Html.DisplayNameFor(model => model.Status)</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.PIC)</td>
                <td>@Html.DisplayFor(modelItem => item.Name)</td>
                <td>@Html.DisplayFor(modelItem => item.StartDate)</td>
                <td>@Html.EditorFor(modelItem => item.Status)</td>
            </tr>
        }
    </tbody>
</table>

$(document).ready(function () {
    $("#tblEvent").dataTable({
        "order": [[1, "desc"]]
    });
});
Run Code Online (Sandbox Code Playgroud)

在表格中,我可以单击复选框,但我不知道如何处理click事件,因为我正在使用数据表来显示数据.如何使用datatable处理复选框事件?

javascript asp.net-mvc jquery datatables

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

使用Knockoutjs的绑定日期

使用knockout将日期值绑定到文本框时出现问题,如下图所示 在此输入图像描述

当第一次加载页面时,我使用ajax来获取AccountStatements数据.

function AccountStatementViewModel(companyID) {
    var self = this;
    ...
    var AccountStatement = {
        AccountStatementID: self.AccountStatementID,
        CompanyID: self.CompanyID,
        Description: self.Description,
        Amount: self.Amount,
        ReceiptDate: self.ReceiptDate,
        Type: self.Type
    }

    self.AccountStatement = ko.observable();
    self.AccountStatements = ko.observableArray();

    $.ajax({
        url: webroot + 'AccountStatement/GetAccountStatements',
        contentType: 'application/json; charset=utf-8',
        data: { id: self.CompanyID },
        cache: false
    }).done(function (data) {
        self.AccountStatements(data);
    });
    ...
    self.edit = function (accountStatement) {
        $('#lnkAddAccountStatement').hide('blind', 1000);
        $('#pnlAddEditAccountStatement').show('blind', 1000);
        self.AccountStatement(accountStatement);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

Controller在json中返回结果:

public JsonResult GetAccountStatements(int id)
{
    var accountStatementsVM = db.AccountStatements
        .Where(a => a.CompanyID …
Run Code Online (Sandbox Code Playgroud)

javascript knockout.js momentjs

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

如何在Windows窗体上使用IDisposable模式

我已经阅读了本文中的 IDisposable模式,并希望在我的Windows窗体应用程序中实现它.我们知道在windows表单.Designer.cs类中已经存在Dispose方法

private System.ComponentModel.IContainer components = null;

protected override void Dispose(bool disposing)
{
    if (disposing && (components != null))
    {
        components.Dispose();
    }
    base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)

在.cs类我正在使用Typed Dataset来读取和保存数据.

public partial class frmCustomerList
{
    private MyTypedDataSet ds = new MyTypedDataSet();
    ...
}
Run Code Online (Sandbox Code Playgroud)

那么,如何实现IDisposable配置MyTypedDataSet?如果我IDisposable在frmCustomerList中实现并实现其接口

public partial class frmCustomerList : IDisposable
{
    private MyTypedDataSet ds = new MyTypedDataSet();
    void Dispose()
    {
       ds.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

那么Dispose(bool disposing).Designer.cs中的方法呢?

c# idisposable

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

单个页面中多个拖放区的全局选项

我有多个表单,每个表单都有一个拖放区。我已根据此链接成功启动了 dropzone 。

var myDropzoneTheFirst = new Dropzone(
    '#form1',
    {
        url : "upload1",
        paramName: 'postedFile',
        addRemoveLinks: true,
        dictDefaultMessage: 'Drop files or click here to upload',
        ...
    }
);

var myDropzoneTheSecond = new Dropzone(
    '#form2',
    {
        url : "upload'",
        paramName: 'postedFile',
        addRemoveLinks: true,
        dictDefaultMessage: 'Drop files or click here to upload',
        ...
    }
);
Run Code Online (Sandbox Code Playgroud)

每个 dropzone 的选项几乎相同,除了 url 之外。那么,如何集中该选项,以便我不必为其他 dropzone 编写相同的配置?

jquery dropzone.js

5
推荐指数
1
解决办法
4969
查看次数

每个视图的ASP.NET MVC 1 ViewModel?

我读过文章" 我们如何做MVC ".在规则#3中,表示"我们每个视图只有一个ViewModel类型".例如,当我们在mvc中搭建脚手架时,它会自动创建5个视图(创建,删除,详细信息,编辑和索引).通过该声明,是否意味着我们必须为该视图创建5个ViewModel?如果我的假设是错误的,那么使用ViewModels的最佳做法是什么?

c# asp.net-mvc viewmodel asp.net-mvc-viewmodel

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

angularjs输入类型日期的日期格式验证

我正在尝试使用AngularJS创建日期并根据文档

输入日期验证和转换.在尚不支持HTML5日期输入的浏览器中,将使用文本元素.在这种情况下,必须以有效的ISO-8601日期格式(yyyy-MM-dd)输入文本,例如:2009-01-06.由于许多现代浏览器尚不支持此输入类型,因此通过占位符或标签向用户提供预期输入格式的提示非常重要.

它只接受有效的ISO-8601日期格式(yyyy-MM-dd).

我试图在pattern's属性中定义新的日期格式,如下面的代码所示:

<div ng-app="">
  <form name="frmSPA" novalidate>
    <input type="date" placeholder="Enter SPA Date" pattern="dd/MM/yyyy" name="SPADate" ng-model="SPADate" ng-required="true" />
    <span ng-show="frmSPA.SPADate.$touched && frmSPA.SPADate.$error.required">SPA Date is required</span>
    <span ng-show="frmSPA.SPADate.$touched && frmSPA.SPADate.$error.date">Not a valid date</span>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

那么如何将默认日期格式更改为dd/MM/yyyy.这是jsfiddle.

javascript date angularjs

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

C#string.Replace问题

我有一个像这样的字符串:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address, @address2)"
Run Code Online (Sandbox Code Playgroud)

然后我@address用'Elm Street' 代替

query = query.Replace("@address", "'" + "Elm Street" + "'");
Run Code Online (Sandbox Code Playgroud)

结果变成:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', 'Elm Street'2)
Run Code Online (Sandbox Code Playgroud)

如何获得结果:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', @address2) ?
Run Code Online (Sandbox Code Playgroud)

c# sql string replace

0
推荐指数
1
解决办法
1413
查看次数

从视图运行时如何修复Url(〜/ Views / Home / Index.cshtml)

我正在使用MVC 4 VS 2012 Express for Web开发网站。通常,当我直接从视图中运行时,例如Home Controller中的Index View,我在URL地址栏上获得了“ http:// localhost:62335 / ”,但是现在我获得了http:// localhost:62335 / Views / Home /Index.cshtml

我不会在RouteConfig类上更改路由,如下面的代码所示

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及如何解决?

asp.net-mvc asp.net-mvc-routing razor asp.net-mvc-4

0
推荐指数
1
解决办法
6902
查看次数