【发布时间】:2016-08-22 17:16:16
【问题描述】:
我在运行服务器时收到此错误:
类型异常 'System.Data.Entity.Core.EntityCommandExecutionException' 发生在 EntityFramework.SqlServer.dll 但未在用户代码中处理 附加信息:执行命令定义时出错。有关详细信息,请参阅内部异常。
这是我的 ActionResult 发生此异常的地方,位于 foreach 循环中的行。来自数据库的表投标对 AspNetUser 表有外键约束。
public ActionResult Details(long? id)
{
if (id == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
auction auction = db.auctions.Find(id);
if (User.IsInRole("Administrator"))
ViewBag.UserRole = "Administrator";
else if (User.IsInRole("User"))
ViewBag.UserRole = "User";
else
ViewBag.UserRole = "Guest";
var bids = from b in db.bids
where b.IDAuc == id
orderby b.tokens
descending select b;
var bidsLimited = bids.Take(10);
var users = from b in db.AspNetUsers
select b;
int count = bidsLimited.Count();
long[] prices = new long[count];
string[] bidders = new string[count];
string[] times = new string[count];
string[] states = new string[count];
int i = 0;
foreach (var bid in bidsLimited)
{
prices[i] = bid.tokens;
bidders[i] = bid.AspNetUser.Email; // HERE IS EXCEPTION
times[i] = bid.created.ToString(@"dd\:hh\:mm\:ss");
states[i++] = "Open";
}
if (auction.state == "Sold")
states[0] = "Sold";
ViewBag.count = count;
ViewBag.prices = prices;
ViewBag.bidders = bidders;
ViewBag.times = times;
ViewBag.states = states;
ViewBag.IDAuction = id;
return View(auction);
}
我真的很困惑,第一次看到这个异常,希望有人能帮我解决这个问题。
提前致谢!
【问题讨论】:
-
您没有对
var users = from b in db.AspNetUsers select b;做任何事情尝试在您的var bids查询中急切加载用户信息。即类似from b in db.bids.Include('AspNetUser') -
没有提到有什么奇怪的,我已经用完全相同的代码完成了一个应用程序的编码,现在在另一个应用程序上,我在前一个相同的应用程序上遇到异常,没有异常。
标签: c# asp.net entity-framework