小编Jor*_*rin的帖子

Multi-Mapper用于创建对象层次结构

我一直在玩这个,因为它看起来感觉很像记录的帖子/用户示例,但它略有不同,并不适合我.

假设以下简化设置(联系人有多个电话号码):

public class Contact
{
    public int ContactID { get; set; }
    public string ContactName { get; set; }
    public IEnumerable<Phone> Phones { get; set; }
}

public class Phone
{
    public int PhoneId { get; set; }
    public int ContactID { get; set; } // foreign key
    public string Number { get; set; }
    public string Type { get; set; }
    public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望最终能够返回一个与多个Phone对象联系的东西.这样,如果我有2个联系人,每个联系人有2个电话,我的SQL将返回一个连接,作为结果集共4行.然后Dapper将弹出2个接触对象,每个接触对象有两部手机.

这是存储过程中的SQL:

SELECT *
FROM Contacts
    LEFT …
Run Code Online (Sandbox Code Playgroud)

dapper multi-mapping

75
推荐指数
7
解决办法
5万
查看次数

实体框架更新实体以及子实体(根据需要添加/更新)

我的EF上下文之间Issues和之间存在多对多的关系Scopes.在ASP.NET MVC中,我打开了一个允许用户编辑特定问题的编辑表单.在表单的底部,是一个复选框列表,允许他们选择适用于此问题的范围.在编辑问题时,它可能总是会有一些与之关联的范围 - 这些框将被检查.但是,用户有机会检查更多范围或删除一些当前检查的范围.我的代码看起来像这样只是为了保存问题:

            using (var edmx = new MayflyEntities())
            {
                Issue issue = new Issue { IssueID = id, TSColumn = formIssue.TSColumn };
                edmx.Issues.Attach(issue);

                UpdateModel(issue);

                if (ModelState.IsValid)
                {
                    //if (edmx.SaveChanges() != 1) throw new Exception("Unknown error. Please try again.");
                    edmx.SaveChanges();
                    TempData["message"] = string.Format("Issue #{0} successfully modified.", id);
                }
            }
Run Code Online (Sandbox Code Playgroud)

所以,当我尝试添加逻辑来保存相关的范围时,我尝试了几件事,但最终,这对我来说最有意义:

            using (var edmx = new MayflyEntities())
            {
                Issue issue = new Issue { IssueID = id, TSColumn = formIssue.TSColumn };
                edmx.Issues.Attach(issue); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework

15
推荐指数
1
解决办法
4659
查看次数

Visual Studio 2010 JavaScript Intellisense在"函数"中大写F

我正在经历一些非常烦人的事情,我无法弄清楚它为什么会这样做.不知道什么时候开始,因为我最近擦了我的机器,所以也许它是最近的更新或者可能是不久之前.

无论哪种方式,这都是正在发生的事情.当我声明一个匿名函数内联并开始键入"function(){...}"部分时,VS2010 intellisense出现并用自己的大写"Function"替换我的小写函数.我想这是JavaScript或JScript中的一些静态函数或其他东西,但我不知道.无论哪种方式,当我键入"()"时,它假定这就是我想要的.

如果我宣布一个独立的功能它不受影响,因为我之后没有放"()",所以它只留下我键入的内容.

以下是一些正在发生的事情的屏幕截图.
javascript intellisense在此输入图像描述

这是非常令人沮丧的,因为我每次都没有注意到它,然后,当然,该功能不会执行.我也在VS2008每天工作,在2008年,"功能"和"功能"都列在intellisense菜单中,但默认为小写,所以它不会影响我.

有什么方法可以覆盖智能感知设置吗?查找文件并从列表中删除"功能",因为我永远不会使用它?将其默认设置为小写"功能"选项?

任何帮助都会很棒.谢谢!

-Jorin

javascript intellisense visual-studio-2010

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

保存MVVM/Knockoutjs Web App更改的最佳方法?

我一直在玩KnockoutJS并且非常喜欢它通过防止物质从裂缝中掉落而从各个角度简化设计.我的问题是将数据保存回服务器的推荐"最佳实践"是什么?我的理解是,在连接的MVVM中,第一个"M"是数据层,因此ViewModel触发器中的依赖关系跟踪和通知直接保存回数据层.在JavaScript应用程序中,我们断开连接并使用AJAX有选择地保存回服务器.

我正在使用它的应用程序是MVC3,我绝对得到如何在我的控制器上编写"保存"操作,在我的页面上的某个地方放置一个"保存"按钮,将整个ViewModel发布到该Save操作,然后坚持到数据库.但是当你进行快速编辑然后再次保存时呢?或者如果保存按钮不适合设计流程怎么办?相反,您希望每次在没有保存按钮的表单上进行更改时发布到操作?我反复提出的想法是:

  • 每次进行任何更改时都会发布整个ViewModel,并使Action知道什么是新的和什么不是(不理想,特别是对于大型模型,如果没有别的,因为每次保存时传输的数据会不必要地大).
  • 向ViewModel中的每个项添加一个属性,用于跟踪自上次保存以来它是否是新的和/或已更改.然后,grep out那些项目并仅将这些项目发布到服务器(我没有测试过这个,但我认为这可以使用_destroy属性完成,就像Rails应用程序一样).
  • 分成尽可能多的较小的ViewModel,这样前两个选项的任何痛苦都会被最小化(这可能无论如何都应该这样做).
  • 其他一些更好的方法?

我希望有一些我没有想过的好主意.能够声明性地绑定所有内容并且仍然有效地保存将是非常棒的.

ajax save mvvm knockout.js

9
推荐指数
2
解决办法
4084
查看次数

实体框架4 CTP 5自我引用多对多

我的数据库中有以下场景.这是一项研究记录,这些研究将其他研究作为先决条件.在我的数据库设计中,它看起来像这样:

自我引用多对多

我的代码看起来像这样:

public class Study
{
    public int ID { get; set; }
    public string Topic { get; set; }
    public byte TypeID { get; set; }
    public virtual StudyType Type { get; set; }
    public bool Deprecated { get; set; }

    public virtual ICollection<Study> Prerequisites { get; set; }
}

public class StudyType
{
    public byte ID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Study> Studies { get; set; }
}

public class …
Run Code Online (Sandbox Code Playgroud)

many-to-many entity-framework-4 self-reference entity-framework-ctp5

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

编辑操作中使用RowVersion的ASP.NET MVC并发

我想为我们的问题跟踪应用程序做一个简单的编辑表单.为简单起见,HttpGet Edit操作看起来像这样:

    // Issues/Edit/12
    public ActionResult Edit(int id)
    {
        var thisIssue = edmx.Issues.First(i => i.IssueID == id);
        return View(thisIssue);
    }
Run Code Online (Sandbox Code Playgroud)

然后HttpPost动作看起来像这样:

    [HttpPost]
    public ActionResult Edit(int id, FormCollection form)
    {
        // this is the dumb part where I grab the object before I update it.
        // concurrency is sidestepped here.
        var thisIssue = edmx.Issues.Single(c => c.IssueID == id);

        TryUpdateModel(thisIssue);
        if (ModelState.IsValid)
        {
            edmx.SaveChanges();

            TempData["message"] = string.Format("Issue #{0} successfully modified.", id);
            return RedirectToAction("Index");
        }

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

这非常有效.但是,并发检查不起作用,因为在Post中,我正在尝试更新它之前重新检索当前实体.但是,对于EF,我不知道如何使用它的好看SaveChanges()但是将我附加thisIssue到上下文中.我试着打电话 …

asp.net-mvc concurrency entity-framework

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