我一直在玩这个,因为它看起来感觉很像记录的帖子/用户示例,但它略有不同,并不适合我.
假设以下简化设置(联系人有多个电话号码):
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) 我的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) 我正在经历一些非常烦人的事情,我无法弄清楚它为什么会这样做.不知道什么时候开始,因为我最近擦了我的机器,所以也许它是最近的更新或者可能是不久之前.
无论哪种方式,这都是正在发生的事情.当我声明一个匿名函数内联并开始键入"function(){...}"部分时,VS2010 intellisense出现并用自己的大写"Function"替换我的小写函数.我想这是JavaScript或JScript中的一些静态函数或其他东西,但我不知道.无论哪种方式,当我键入"()"时,它假定这就是我想要的.
如果我宣布一个独立的功能它不受影响,因为我之后没有放"()",所以它只留下我键入的内容.
以下是一些正在发生的事情的屏幕截图.


这是非常令人沮丧的,因为我每次都没有注意到它,然后,当然,该功能不会执行.我也在VS2008每天工作,在2008年,"功能"和"功能"都列在intellisense菜单中,但默认为小写,所以它不会影响我.
有什么方法可以覆盖智能感知设置吗?查找文件并从列表中删除"功能",因为我永远不会使用它?将其默认设置为小写"功能"选项?
任何帮助都会很棒.谢谢!
-Jorin
我一直在玩KnockoutJS并且非常喜欢它通过防止物质从裂缝中掉落而从各个角度简化设计.我的问题是将数据保存回服务器的推荐"最佳实践"是什么?我的理解是,在连接的MVVM中,第一个"M"是数据层,因此ViewModel触发器中的依赖关系跟踪和通知直接保存回数据层.在JavaScript应用程序中,我们断开连接并使用AJAX有选择地保存回服务器.
我正在使用它的应用程序是MVC3,我绝对得到如何在我的控制器上编写"保存"操作,在我的页面上的某个地方放置一个"保存"按钮,将整个ViewModel发布到该Save操作,然后坚持到数据库.但是当你进行快速编辑然后再次保存时呢?或者如果保存按钮不适合设计流程怎么办?相反,您希望每次在没有保存按钮的表单上进行更改时发布到操作?我反复提出的想法是:
我希望有一些我没有想过的好主意.能够声明性地绑定所有内容并且仍然有效地保存将是非常棒的.
我的数据库中有以下场景.这是一项研究记录,这些研究将其他研究作为先决条件.在我的数据库设计中,它看起来像这样:

我的代码看起来像这样:
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
我想为我们的问题跟踪应用程序做一个简单的编辑表单.为简单起见,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 ×2
ajax ×1
concurrency ×1
dapper ×1
intellisense ×1
javascript ×1
knockout.js ×1
many-to-many ×1
mvvm ×1
save ×1