저는 꽤 새로운 C#과 MVC입니다. 그리고 저는 이제 DB4o로 놀아 왔습니다. 나는 사용자가 제공 한 URL을 통해 영화를 긁어 모으는 연습 사이트를 만들었습니다. 필름은 db4o 데이터베이스에 저장됩니다. 그러나 이제는 사이트를 시작할 때마다 Db4objects.Db4o.Ext.DatabaseClosedException이 발생하는 것 같습니다.
throw됩니다. 나는 현재 연결을 닫지 않고 DB에 너무 많은 호출을하고 있다는 느낌이 들었다.Db4objects.Db4o.Ext.DatabaseClosedException throw됩니다
여기 내 컨트롤러가 있는데, 나는이 문제가 원인이라고 생각합니다. (가) 방법을 만들
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcMovieDatabase.Models;
using Db4objects.Db4o;
using Db4objects.Db4o.Linq;
using System.IO;namespace MvcMovieDatabase.Controllers
{
public class HomeController : Controller
{
static string YapFileName = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"moviesDB.yap");
IObjectContainer db4o = Db4oEmbedded.OpenFile(YapFileName);
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(string movieURL)
{
Movie newMovie = new Movie();
MovieDirectory dir = new MovieDirectory();
newMovie = dir.GetMovieData(movieURL);
db4o.Store(newMovie);
db4o.Close();
return RedirectToAction("Index");
}
public ActionResult DB4o()
{
IEnumerable<Movie> allFilms = from movie in db4o.Query<Movie>()
select movie;
db4o.Close();
return View(allFilms);
}
}
}
는 문자열을 사용하여 데이터를 잡기 위해 필요한 코드를 실행합니다. db4o 메소드는 db에서 저장된 데이터를 얻기 위해 쿼리를 실행합니다. 나는 그 문제를 발견 할 수 있는지를보기 위해 닫히고 스트림을 열어 보았지만 db40 메서드의 뷰 내에서이 코드 조각에 대해 동일한 예외를 던지기 시작했습니다.
@model IEnumerable<MvcMovieDatabase.Models.Movie>
@{
ViewBag.Title = "DB4o";
}
<h2>DB4o</h2>
@foreach (var item in Model)
{
foreach (var cast in item.MovieCastList)
{
<p><img src="@cast.CastImage" /></p>
<p>@cast.CastRealName | <span>@cast.CastFilmName</span></p>
}
}
그러나 이것은 아마도 내 간섭에 의한 것일 수 있습니다. 이 문제에 도움을 주셔서 감사합니다.