【问题标题】:System.Data.Entity.Core.MetadataException: 'Schema specified is not valid.System.Data.Entity.Core.MetadataException:'指定的架构无效。
【发布时间】:2017-12-29 23:41:23
【问题描述】:

我正在创建一个登录窗口,在输入错误凭据后按下提交按钮时出现问题。 这是我的看法

@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'。'

我该如何解决这个问题?

【问题讨论】:

  • 从您发布的错误来看,您似乎有两个类的冲突。他们都被命名为RegisteredUser。一个位于ProjectyMcProjectface,另一个位于ProjectyMcProjectface.Models。这就是造成歧义的原因。我会建议你重命名其中一个
  • @jamiedanq 是的,谢谢,成功了!
  • 很高兴它解决了!
  • 能否将我的评论标记为有帮助
  • @jamiedanq 恐怕我不知道怎么做

标签: c# asp.net-mvc entity-framework edmx


【解决方案1】:

Edm 的路径似乎有所改变。请检查edm位置是否正常并清理并重建项目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多