【发布时间】:2015-02-12 17:58:35
【问题描述】:
我正在创建一个 C# Web 应用程序,我可以在其中添加公司以及公司的分支机构所在的位置。一家公司可以有多个地点分支机构。对于一个地点,可能有几家公司。所以Companies和Territory之间的关系是Many-Many。
这是我目前的公司模型,
public class CompanyModel
{
[HiddenInput(DisplayValue = false)]
public long CompanyId { get; set; }
[Display(Name = "Company Name")]
[Required(ErrorMessage = "* required")]
public string CompanyName { get; set; }
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "* required")]
[RegularExpression(@"\d*", ErrorMessage = "Not a valid phone number")]
public string PhoneNo { get; set; }
[Display(Name = "Post Code List", Prompt = "eg. BA5, BS16")]
public string PostCodeList { get; set; }
}
它有一个文本框,可以接受逗号分隔的字符串。所以我使用foreach对其进行迭代以将其添加到表中,
foreach (var s in company.PostCodeList.Split(','))
{
AddPostCode(s, company.CompanyId);
}
AddPostcode 在哪里,
public void AddPostCode(string postCode, long companyId)
{
using (var db = new BoilerServicingDbContext())
{
//Does post code exist
var p = db.Territories.FirstOrDefault(x => x.PostCodePrefix == postCode);
//if not create
if (p == null)
{
p = new Territory
{
PostCodePrefix = postCode
};
db.Territories.Add(p);
}
//get the company
var c = db.Companies.First(x => x.Id == companyId);
//add post code
c.Territories.Add(p);
//save
db.SaveChanges();
}
}
现在我收到以下错误,
操作无法完成,因为 DbContext 已被释放。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:System.InvalidOperationException:操作无法完成,因为 DbContext 已被释放。
异常详细信息:System.InvalidOperationException:序列不包含任何元素
Source Error:
Line 16: </thead>
Line 17: <tbody>
Line 18: @foreach (var a in Model)
Line 19: {
Line 20: <tr>
Source File: c:\Source\LSP.HEA.BoilerServicing\Main\LSP.HEA.BoilerServicing.Web\Views\Companies\Index.cshtml
Line: 18
【问题讨论】:
-
从您的视图(异常实际发生的地方)发布循环的其余部分以及呈现视图的控制器操作。
标签: c# entity-framework asp.net-mvc-3