小编Pau*_*ann的帖子

使用Automapper将DTO映射到实体

我有一个具有以下结构的实体框架POCO.

public class Entity
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我为这个实体创建了一个数据传输对象供我的视图使用.

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

现在,我在Global.asax文件中有以下映射代码.

Mapper.CreateMap<Entity, EntityDto>();
Mapper.CreateMap<EntityDto, Entity>(); // not sure whether I need this as well?
Run Code Online (Sandbox Code Playgroud)

一切正常,我将DTO传递给我的观点确定,我可以Entity从我的EntityDto模型中创建一个新实例.当我尝试编辑我的问题时出现问题Entity; 我知道这是由于AutoMapper失去了EF创建的跟踪对象更改的实体密钥,但是通过一些来源读取似乎并不是一个明确的解决方案.这是我用来编辑我的实体的动作.

public ActionResult EditEntity(EntityDto model)
{
    var entity = context.Entities.Single(e => e.Id == model.Id);
    entity = Mapper.Map<EntityDto, …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework automapper

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

流畅的NHibernate - 将外键映射为属性

我正在寻找一种方法来添加两个实体之间的关联,并具有外键的可设置ID.我搜索过以前的帖子,但我能找到的最接近的建议是.加入协会 - 这不是我所希望的.我知道这可以在带有.HasForeignKey绑定的Entity Framework中完成,但我似乎无法在Fluent NHibernate中找到一种方法.

以两个示例实体为例:

public class Ticket
{
    public virtual int Id { get; set; }
    public virtual string Title { get; set; }
    public virtual string ServiceId { get; set; }
    public virtual Service Service { get; set; }
}

public class Service
{
    public virtual string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建Ticket的新实例并使用以下方法为其分配服务(假设表中已存在关联的服务):

Ticket ticket = new Ticket() {
    Title = "Problem with MS Word",
    ServiceId = "Microsoft Word 2012" …
Run Code Online (Sandbox Code Playgroud)

c# foreign-key-relationship fluent-nhibernate fluent-nhibernate-mapping

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

远程主机强制关闭现有连接 - WCF数据服务错误

我目前正在使用带有Entity Framework的WCF数据服务(以及ADO.Net数据服务),并且在执行POST时出现以下错误(省略/更改了一些不相关的信息):

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="en-GB">The URI 'http://localhost:56568/MyWcfDataServices.svc/EntitySetName(pk_id)' is not valid for POST operation. For POST operations, the URI must refer to a service operation or an entity set.</m:message></m:error>
Run Code Online (Sandbox Code Playgroud)

在网上浏览一下,我似乎无法找到有关此消息的大量信息,因此调试它有点困难.这可能是因为我发布的一个属性是一个很大的base64字符串(如果我不发布它,它可以正常工作).我试过设置maxRequestLength如下:

<httpRuntime maxRequestLength="102400" />
Run Code Online (Sandbox Code Playgroud)

但它似乎没有帮助.虽然我会继续解决这个问题,但我想我会在这里做一个快速的帖子,看看是否有人知道可能会有所帮助的事情.

我的WCF数据服务类如下所示:

public class MyWcfDataServices: DataService<ContextName>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        // set entity access rules etc
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:我似乎没有得到这个.这是我到目前为止所尝试的内容.

在服务器端,我设置了以下绑定:

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
                             minFreeMemoryPercentageToActivateService="0" />
  <services>
    <service name="MyWcfDataServices" 
             behaviorConfiguration="myBehaviorConfig">
      <endpoint address=""
                binding="webHttpBinding"
                bindingConfiguration=""
                contract="System.Data.Services.IRequestHandler" />
    </service>
  </services>
  <behaviors> …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework wcf-data-services

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

在编辑时更新observableArray项

jsFiddle例子


我有一个observableArray可选项(在表中).我要做的是点击表格行打开一个模态,用项目详细信息填充模态,允许编辑项目然后保存更改 - 反映更新的项目observableArray.到目前为止,我已经完成了其他所有工作,但似乎无法更新数组项.

到目前为止,我已经尝试过:

  • 结交每一个项目observableArrayobservable
  • .replace在数组上使用来更新项目 - 这确实有效,但它只是感觉不对
  • 回发更新的项目,将其应用于数据库并重新绑定数组 - 虽然这有效,但是这不会破坏KnockoutJS的观点吗?

我在上面提供了一个jsFiddle链接,演示了我想要实现的目标.

查看模型和初始化

随意就我如何初始化任何建议,self.selectItem我目前在KnockoutJS的学习阶段,并通过与模拟项目玩弄这样做,所以我向所有人开放的建设性的批评.

var items = [{
    Id: 1,
    Text: 'First item'
}, {
    Id: 2,
    Text: 'Second item'
}];

var viewModel = function (items) {
    var self = this;
    self.items = ko.observableArray(items);
    self.selectedItemId = ko.observable();
    self.item = ko.observable();
    self.selectItem = function (item) {
        for (var i = 0; i < self.items().length; i++) {
            if (self.items()[i].Id …
Run Code Online (Sandbox Code Playgroud)

knockout.js

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

MVC 3传递实体作为接口

我目前正在使用Ninject作为我的DI工作的MVC 3项目,业务对象存储在一个单独的程序集中.我遇到了控制器参数的问题,当回发CRUD操作时,我收到错误"无法创建接口的实例".我知道你不能创建一个接口的实例,但似乎我可以解决的唯一方法是使用自定义模型绑定器并通过FormCollection.这看起来非常混乱,我想尽可能多地保留项目中特定类型的代码 - 因此在任何地方接口和Ninject到DI的混凝土.自定义模型绑定不仅看起来很乱 - 我不会丢失我的DataAnnotations吗?

一些代码来描述我的内容:

public ActionResult Create()
{
    // I'm thinking of using a factory pattern for this part
    var objectToCreate = new ConcereteType();
    return (objectToEdit);
}

[HttpPost]
public ActionResult Create(IRecord record)
{
    // check model and pass to repository
    if (ModelState.IsValue)
    {
        _repository.Create(record);
        return View();
    }

    return View(record);
}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个?你是怎么克服它的?

谢谢!

dependency-injection interface model-binding loose-coupling asp.net-mvc-3

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

Visual Studio 2010 Premium SP1非常恼人的打字滞后

我最近注意到,在我的项目增长到一定规模后,我最终在VS2010中获得了很多令人讨厌的打字延迟.它会影响每种语言,我输入的每个单词最终需要大约5秒才能渲染 - 与删除相同,它也会很好地缓冲它们,好像我变得不合理地不耐烦并在3秒后再次点击删除...它会处理我的所有删除.

所以显而易见的是硬件:Intel Core2 6300 @ 1.87GHz,2GB RAM,32位操作系统和通常的7200rpm 8MB缓存硬盘,不应该经历这么多的滞后!所以我决定卸载并重新安装VS2010以删除我可能正在使用的任何插件(我个人安装的唯一插件是Subversion的AnkhSVN).仍然是完全相同的问题.

我到现在为止,我只是附加了一个调试器来查看我的devenv.exe进程的本机代码,我看到我输入的每个字符都会在devenv.exe中的0x757ed36f处抛出大量的这些第一次机会异常:0xE0434352:0xe0434352. - 任何人都知道这是什么/如何找到这些补偿的来源?

performance visual-studio-2010

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

在MVC 3中使用LINQ表达式自定义html帮助器

我正在使用表达式构建一个自定义HTML帮助器来绘制标签云,其中进入标签云的数据来自表达式.我会让代码在这里谈谈:

查看模型

public class ViewModel
{
    public IList<MyType> MyTypes { get; set; }
    public IList<MyOtherType> MyOtherTypes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图

<div>
    @Html.TagCloudFor(m => m.MyTypes)
</div>

<div>
    @Html.TagCloudFor(m => m.MyOtherTypes)
</div>
Run Code Online (Sandbox Code Playgroud)

帮手

public static MvcHtmlString TagCloudFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) where TProperty : IList<MyType> where TProperty : IList<MyOtherType>
{
    // So my actual question here is: how do I get my IList<TProperty> collection 
    // so I can iterate through and build my HTML control
}
Run Code Online (Sandbox Code Playgroud)

我已经快速浏览过并完成了常规的Google搜索,但我似乎无法找到具体的答案.我认为它在某个地区,expression.Compile().Invoke() …

c# html-helper asp.net-mvc-3

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

在Javascript中复制C#服务器端验证

我基本上在我的页面上进行了以下验证 - 它是一个单词规则,文本框中的描述不能超过3个单词,不包括单词'和'.我在C#中实现了以下服务器端验证,它运行正常

if (Desc.Trim().ToString() != "")
{
    MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+");

    if (collection.Count > 3)
    {
        ErrorMsg.Append("Description should contain at most 3 words(excluding 'and').");
        ErrorMsg.Append("\\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我很难在Javascript中使用相同的工作.我已经尝试了以下但是它到目前为止还没有工作,所以希望有更好的Javascript知识的人可以看到错误.注意if是在页面上触发的更大验证函数的一部分 - 警报只是在那里看它是否进入这个if(它没有) - 当这个块被删除时,页面上的其余JS是工作正常.

if (Desc.val().trim() != "")
{
    alert('1');
    !regexWordRule.test(Desc.val());
    alert('2');

    if (Desc.val().match(regexWordRule).length > 3)
    {
        errorText += "Description should contain at most 3 words(excluding 'and').";
    }

    valid = false;
}
Run Code Online (Sandbox Code Playgroud)

以下是我在js文件最顶部定义的regexWordRule.

var regexWordRule = /[\S]+/;
Run Code Online (Sandbox Code Playgroud)

javascript validation

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

打开XML段落间距

我在使用Open XML生成.docx时遇到了一个奇怪的问题.我有一个TableCell具有Paragraph然后RunText像这样产生的:

tblRow.Append(new TableCell(new Paragraph(GetPropertiesForStyle("TableDescription"), new Run(new Text(colName)))));
Run Code Online (Sandbox Code Playgroud)

GetPropertiesForStyle方法返回ParagraphProperties特定段落并设置样式.这一切都很好,但是在表格行中,第一个单元格之前似乎有双倍间距,最后一个单元格之后有两个间距 - 中间的所有单元格看起来都非常精细.

在此输入图像描述

我的样式配置如下所示:

new Style(
    new StyleName() { Val = "TableDescription" },
    new StyleParagraphProperties(
        new ParagraphBorders(
            new BottomBorder() { Val = BorderValues.None }
        ),
        new SpacingBetweenLines() { Before = "100", After = "100", Line = "200", LineRule = LineSpacingRuleValues.Exact },
        new TableCellVerticalAlignment() { Val = TableVerticalAlignmentValues.Center }
    )
),
Run Code Online (Sandbox Code Playgroud)

我使用生产力工具检查了生成的XML,并且它完美地应用了这些属性.每个TableCell都有以下配置(在那里有一些额外的边距属性和一个着色器填充,为简洁我省略了).

<w:tc>
    <w:p>
        <w:pPr>
            <w:pStyle w:val="TableDescription" />
        </w:pPr> …
Run Code Online (Sandbox Code Playgroud)

c# openxml

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

使用Moq对LINQ to SQL CRUD操作进行单元测试

我已经看过其他问题,但没有什么能与我正在寻找的东西相提并论......主要是因为我不是100%肯定我正在寻找什么!

基本上我现在正在开发一个新项目,我已经为数据库实体创建了抽象层,并将DAC设置为存储库.我想用Mock对象对它进行单元测试,但是我已经用CRUD(特别是C)操作打了一个智能墙,我的单元测试类:

[TestClass]
public class RepositoryTest
{
    private Mock<IPersonRepository> _repository;
    private IList<IPerson> _personStore;

    [TestInitialize()]
    public void Initialize()
    {
        _personStore= new List<IPerson>() {
            new Person() { Name = "Paul" },
            new Person() { Name = "John" },
            new Person() { Name = "Bob" },
            new Person() { Name = "Bill" },
        };

        _repository = new Mock<IPersonRepository>();
        _repository.Setup(r => r.Entirely()).Returns(_personStore.AsQueryable());
    }

    [TestCleanup()]
    public void Cleanup()
    {
        _personStore.Clear();
    }

    [TestMethod()]
    public void Can_Query_Repository()
    {
        IEnumerable<IPerson> people = _repository.Object.Entirely();
        Assert.IsTrue(people.Count() == 4);
        Assert.IsTrue(people.ElementAt(0).Name == …
Run Code Online (Sandbox Code Playgroud)

.net c# moq repository linq-to-sql

4
推荐指数
1
解决办法
2951
查看次数