【发布时间】:2016-08-03 10:09:54
【问题描述】:
我尝试在FirstOrDefault 的帮助下使用实体框架从我的表中获取数据。
控制器代码如下:
public ActionResult getUser(MembershipModel model)
{
ProviderImplementation.Edmx.ProviderEntities providerEntities = new ProviderImplementation.Edmx.ProviderEntities();
//var membershipModel = new MembershipModel();
//var model = ProviderImplementation.Models.MembershipModel;
//bool isUserOnline = true;
if (!ModelState.IsValid)
{
var isValid = Membership.GetUser(model.UserName, true);
if (isValid != null)
{
var rowData = providerEntities.Users.Where(u => u.UserName.Equals(model.UserName)).FirstOrDefault();
model.UserName = rowData.UserName;
model.Password = rowData.Password;
model.UserId = Convert.ToInt32(rowData.UserId);
model.RoleId = Convert.ToInt32(rowData.RoleId);
//var singleValue = providerEntities.Users.Find(model.UserName);
ViewBag.User = "Found";
}
else
{
ViewBag.User = "Not Found";
}
}
else
{
var error = ModelState.Values.SelectMany(v => v.Errors);
ModelState.AddModelError("NoModelError", error.ToString());
}
return View(model);
}
另外我的表格数据如下: 表名:用户
现在我尝试了很多东西,它可以很好地打印视图中的数据并选择特定的记录。
问题出在这里:
{工作正常}--> 1. 当我使用用户名“abbas”获取记录时,因为它首先遇到 UserId=2,它会在视图中很好地打印出来
查看代码为:
<div style="margin-left: 200px;">
<table cellpadding="10" cellspacing="10">
<tr>
<th>Get User Details</th>
</tr>
<tr>
<th>@ViewBag.User</th>
</tr>
<tr>
<td>@Html.LabelFor(m => m.UserId)</td>
<td>@Html.LabelFor(m => m.UserName)</td>
<td>@Html.LabelFor(m => m.Password)</td>
<td>@Html.LabelFor(m => m.RoleId)</td>
</tr>
<tr>
<td>@Html.DisplayFor(Model=>Model.UserId)</td>
<td>@Html.DisplayFor(Model=>Model.UserName)</td>
<td>@Html.DisplayFor(Model=>Model.Password)</td>
<td>@Html.DisplayFor(Model=>Model.RoleId)</td>
</tr>
</table>
</div>
{Problem}--> 2. 当我获取用户名“Abbas”且 UserId=4 的记录时,FirstOrDefault 会打印第一次遇到的 UserName="abbas" 的上述数据,并且不会打印 UserName="Abbas"看法。
注意:
SingleOrDefault 返回一个异常,告诉它发现了多个实例。
更新:在调试时,当我更改它从数据库中完美打印的值时。
【问题讨论】:
-
问题是什么?
-
请阅读stackoverflow.com/help/how-to-ask然后编辑问题
-
好的,我会阅读并尝试根据需要进行编辑。
-
首先,您应该放弃用户名重复条目的想法。这应该可以解决您面临的非常基本的问题,并且是拥有用户帐户数据的最佳做法。
-
好的,但如果我的应用程序仍然需要它。因此,我需要找到一种解决方案来处理我的数据的区分大小写问题。正如我正在工作的那样,这样的数据结构将有相同的名称,但区分大小写。
标签: c# asp.net-mvc asp.net-mvc-4 entity-framework-5