【问题标题】:An exception of type 'System.InvalidOperationException' occurred in EntityFramework.SqlServer.dll but was not handled in user codeEntityFramework.SqlServer.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
【发布时间】:2017-07-16 16:35:44
【问题描述】:

EntityFramework.SqlServer.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理 我不知道该怎么做。我有一张照片,告诉我哪里没问题。

`---------------------Controller

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using AppTest.Models;
    using System.Web.Mvc;
    using AppTest.ViewModels;
    using System.Data.Common;
    using System.Data.Entity;


    namespace AppTest.Controllers
    {
        public class HomeController : Controller
        {
            private ApplicationDbContext _context;
            public HomeController()
            {
                _context = new ApplicationDbContext();

            }
            protected override void Dispose(bool disposing)
            {
                _context.Dispose();
            }
            public ViewResult Index()
            {
                var saloane = _context.Saloane.Include(c => c.Id).ToList();
                return View(saloane);
            }
            public ActionResult Details (int id)
            {
                var salon = _context.Saloane.SingleOrDefault(c => c.Id == id);
                if (salon == null)
                    return HttpNotFound();
                return View(salon);

            }


    --------------------------------Index
    @model IEnumerable<AppTest.Models.Salon>


    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>Saloane</h2>
    @if (1>1)
    {
        <p>We don't have any customers yet.</p>
    }
    else
    {
        <table class="table table-bordered table-hover">
            <thead>
                <tr>
                    <th>Saloane</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var salon in Model)
                {
                    <tr>
                        <td>@Html.ActionLink(salon.Nume,"Adresa", "Id_Oras",new { id = salon.Id }, null)</td>

                    </tr>
                }
            </tbody>
        </table>
    }
    `

【问题讨论】:

  • Include 用于导航属性 Id 只是一个常规属性。
  • 异常消息是不言自明的。 Include(c =&gt; c.Id) 无效,删除即可。
  • 我也有同样的问题。

标签: c# asp.net .net model-view-controller


【解决方案1】:

正如@Ivan-stoev 所述,您在不需要时使用.Include()

.Include() 用于在同一个数据库事务中包含链接的导航属性(相关实体)——您只需要返回一个列表。

试试

var saloane = _context.Saloane.ToList();

或者,如果您想过滤您的列表,请使用:

var saloane = _context.Saloane.Where(c =&gt; c.SomeProperty == "something").ToList();

【讨论】:

  • 我使用了 var saloane = _context.Saloane.ToList();和同样的问题。
  • 如果您更改了代码,则不可能出现相同的错误,因为旧错误是专门因为您使用.Include(c=&gt;c.Id) - 如果您将新错误上传到 imgur 并添加链接作为评论,我会尽力提供帮助。
  • 该错误意味着您的数据库与您的实体模型(您的代码)不匹配。您可能需要运行迁移或更新数据模型,具体取决于您是先执行代码还是先执行数据库。您的原始问题现已解决,因此如果您自己无法解决该问题,您应该关闭此问题并创建一个新问题(但 Google 是您的朋友——使用它!)
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多