System.Data.Entity.Core.MetadataException:'指定的模式无效。
问题描述:
我正在创建登录窗口,输入错误凭证后按提交按钮时会出现问题。 这是我的看法System.Data.Entity.Core.MetadataException:'指定的模式无效。
@model ProjectyMcProjectface.Models.RegisteredUser
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login page</title>
@Styles.Render("~/Content/LoginVisuals")
</head>
<body>
<div id="LoginWrapper">
@using (Html.BeginForm("Authorize", "Login",FormMethod.Post))
{
<table id="LoginTable">
<tr>
<td>@Html.LabelFor(model => model.UserName)</td>
<td>@Html.EditorFor(model => model.UserName)</td>
</tr>
<tr>
<td></td>
<td>@Html.ValidationMessageFor(model => model.UserName)</td>
</tr>
<tr>
<td>@Html.LabelFor(model => model.PassWord)</td>
<td>@Html.EditorFor(model => model.PassWord)</td>
</tr>
<tr>
<td></td>
<td>@Html.ValidationMessageFor(model => model.PassWord)</td>
</tr>
<tr>
<td colspan="2"><label class="field-validation-error">@Html.DisplayFor(model => model.LoginErrorMessage)</label></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Login" />
<input type="reset" value="Clear" />
</td>
</tr>
</table>
}
</div>
@Scripts.Render("~/bundles/ValidationScripts")
</body>
</html>
我的注册用户模型
public partial class RegisteredUser
{
public int Id { get; set; }
[DisplayName("User Name")]
[Required(ErrorMessage = "This field is required to be filled")]
public string UserName { get; set; }
[DataType(DataType.Password)]
[DisplayName("Password")]
[Required(ErrorMessage = "This field is required to be filled")]
public string PassWord { get; set; }
public string LoginErrorMessage { get; set; }
}
和我的登录控制器
[HttpPost]
public ActionResult Authorize(ProjectyMcProjectface.Models.RegisteredUser userModel)
{
using (InternalDBEntities1 db = new InternalDBEntities1())
{
var userDetails = db.RegisteredUsers.Where(x => x.UserName == userModel.UserName && x.PassWord == userModel.PassWord).FirstOrDefault();
if (userDetails == null)
{
userModel.LoginErrorMessage = "Your password or user name is incorrect";
return View("Index", "Login", userModel);
}
}
return View();
}
行中的错误火灾
var userDetails = db.RegisteredUsers.Where(x => x.UserName == userModel.UserName && x.PassWord == userModel.PassWord).FirstOrDefault();
,并说
CLR类型到EDM类型的映射不明确,因为多个CLR 类型与EDM类型'RegisteredUser'匹配。以前发现的CLR类型 'ProjectyMcProjectface.RegisteredUser',新发现的CLR类型 'ProjectyMcProjectface.Models.RegisteredUser'。'
我该如何解决这个问题?
答
这似乎是Edm的道路已经改变了一些如何。请检查edm位置是否正常并重新整理项目
从您发布的错误中可以看出您有两个类别的冲突。他们都被命名为RegisteredUser。一个驻留在ProjectyMcProjectface中,另一个驻留在ProjectyMcProjectface.Models中。这就是造成歧义的原因。我会建议你重命名其中的一个 – jamiedanq
@jamiedanq是的,谢谢,它的工作! –
很高兴解决了它! – jamiedanq