#c# #asp.net-mvc #ado.net-entity-data-model #datamodel
#c# #asp.net-mvc #ado.net-entity-data-model #модель данных
Вопрос:
Я новичок в C # и не могу найти решение с помощью поиска
У меня есть модель базы данных (EDM)
Я создал файл класса в папке models:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace photostorage.Models
{
public class PhotosRepository
{
private fotostorageEntities db = new fotostorageEntities();
public IEnumerable<photos> FindUserPhotos(string userid)
{
return from m in db.photos
select m;
}
public photos GetPhotosById(int photoid)
{
return db.photos.SingleOrDefault(d => d.id == photoid);
}
}
}
Затем был создан контроллер для этой модели:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using photostorage.Models;
namespace photostorage.Controllers
{
public class PhotosController : Controller
{
//
// GET: /Photos/
public ActionResult ViewPhoto(string userid, int photoid)
{
photos CurrentPhoto = PhotosRepository.GetPhotosById(photoid);
if (CurrentPhoto == null)
return View("NotFound");
else
return View("ViewPhoto", CurrentPhoto);
}
}
}
В результатах я получаю ошибку: ссылка на объект требуется для нестатического поля, метода или свойства photostorage.Модели.Хранилище фотографий.GetPhotosById(int);
Имя таблицы в базе данных — photos EDM ConnectionStrings name — fotostorageEntities
Нужна помощь, потому что я действительно не знаю решения.
Ответ №1:
В данный момент вы вызываете GetPhotosById
как статический метод. Вам нужно будет создать экземпляр PhotosRepository
.
public ActionResult ViewPhoto(string userid, int photoid)
{
PhotosRepository photosRepository = new PhotosRepository();
photos CurrentPhoto = photosRepository.GetPhotosById(photoid);
if (CurrentPhoto == null)
return View("NotFound");
else
return View("ViewPhoto", CurrentPhoto);
}
Комментарии:
1. Спасибо! Ваш отказ помог мне!
Ответ №2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using photostorage.Models;
namespace photostorage.Controllers
{
public class PhotosController : Controller
{
PhotosRepository objPhotosRepository = new PhotosRepository();
//
// GET: /Photos/
public ActionResult ViewPhoto(string userid, int photoid)
{
photos CurrentPhoto = objPhotosRepository.GetPhotosById(photoid);
if (CurrentPhoto == null)
return View("NotFound");
else
return View("ViewPhoto", CurrentPhoto);
}
}
}