Задать вопрос
@Useyd11

Как подключить базу данных к web-приложению ASP.NET MVC в Visual Studio 2017?

Работаю с помощью Entity Framework. Есть база данных, помещенная в папку App_Data - Database1.mdf. Создаю модель, контекст, контроллер.
namespace Test.Models
{
    public class Team
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Coach { get; set; }
    }
 public class Player
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Position { get; set; }

        public int? TeamId { get; set; }
        public Team Team { get; set; }
    }
public class Context : DbContext
    {
        public DbSet<Team> Teams { get; set; }
        public DbSet<Player> Players { get; set; }
    }

namespace Test.Controllers
{
    public class HomeController : Controller
    {
        Context c = new Context();
        public ActionResult Index()
        {
            var players = c.Players.Include(p => p.Team);
            return View(players.ToList());
        }
  }
}

Представление выглядит аналогичным образом, как в примере ниже. В файле Web.config прописываю строку подключения следующим образом
<connectionStrings>
    <add name="Context" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename='|DataDirectory|\Database1.mdf';Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

При запуске приложения VS выдаёт следующую ошибку, подчеркивая строку с выводом данных в контроллере:
System.Data.SqlClient.SqlException: "Cannot create file 'c:\users\alex\source\repos\Test\Test\App_Data\Database1.mdf' because it already exists. Change the file path or the file name, and retry the operation.
CREATE DATABASE failed. Some file names listed could not be created. Check related errors."

Переименование или создание другой бд не помогает. В чём может быть ошибка?

Также имеется база данных на MS SQL Server 2012. Пробую подключать её с помощью модели ADO.NET EDM. VS создаёт необходимые модели, но как с ними дальше работать непонятно. Создание класса-контекста как в первом случае не помогает - данные из БД не загружаются на страницу.
namespace MusicShopWeb
{
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;

    public partial class Buyers
    {
        public int Id { get; set; }
        public string fio { get; set; }
        public string address { get; set; }
        public string phone { get; set; }
    }
    public class BuyersContext : DbContext
    {
        public DbSet<Buyers> Buyers { get; set; }
    }
}
namespace MusicShopWeb.Controllers
{
    public class Buyersontroller : Controller
    {
        private BuyersContext db = new BuyersContext();

        public ActionResult Index()
        {
            return View(db.Buyers.ToList());
        }
}

@model IEnumerable<MusicShopWeb.Buyers>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.fio)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.address)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.phone)
            </th>
            <th></th>
        </tr>
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.fio)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.address)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.phone)
            </td>
        </tr>
    }
    </table>
</body>
</html>

Как вывести данные из бд?
  • Вопрос задан
  • 1292 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Amffore
@Amffore
студент, учу c#
Каким способом пытаешься работать с EF? Судя по коду это Code First подход. Попробуй удалить БД из App_Data. Ведь сама ошибка указывает на то что БД уже существует и не может быть создана.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы