Где EF создает мою базу данных? Если это.

Итак, у меня запущены SQLServerExpress 2008 R2 и Visual Studio 2010. Я считаю, что у меня запущен экземпляр SQL Server (рис. 1). Мне сообщили, что если я не укажу строку подключения в моей программе, EF создаст базу данных на локальном экземпляре SQL Server. Это не так.,.Я получаю ошибку

Мой код выглядит следующим образом:

В global.asax.cx:

protected void Application_Start()
{
    Database.SetInitializer(new DatabaseInit());

    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

Horse.cs:

public class Horse
{
    public int HorseID { get; set; }
    public string Name { get; set; }

    public virtual Participant Participant { get; set; }
}

Participant.cs:

public class Participant
{
    public int ParticipantID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    [Required]
    public Horse Horse { get; set; }
}

MelbourneCupDbContext:

public class MelbourneCupDbContext : DbContext
{
    public DbSet<Horse> Horses;
    public DbSet<Participant> Participants;
}

DatabaseInit:

public class DatabaseInit : DropCreateDatabaseAlways<MelbourneCupDbContext>
{
    protected override void Seed(MelbourneCupDbContext context)
    {
        var Horses = new List<Horse>
        {
            new Horse{Name="Americain"},
            new Horse{Name="Jukebox Jury"},
            new Horse{Name="Dunaden"}
            ....
        };

        foreach (Horse h in Horses)
            context.Horses.Add(h);
        context.SaveChanges();

    }
}

Наконец, когда я пытаюсь использовать базу данных (SignUpController.cs):

private MelbourneCupDbContext dbContext = new MelbourneCupDbContext();

[HttpGet]
public ActionResult Index()
{
    IEnumerable<Horse> allHorsesList = dbContext.Horses.ToList();
    return View(allHorsesList);
}

Я получаю сообщение об ошибке, когда пытаюсь вызвать ToList, что источник не может быть нулевым.

HALP

рисунок 1Запуск экземпляра сервера

3 ответа

"Если установлен SQL Express (включен в Visual Studio 2010), то база данных создается на локальном экземпляре SQL Express (.\SQLEXPRESS). Если SQL Express не установлен, Code First попытается использовать LocalDb ((localdb)\v11"..0) - LocalDb входит в состав Visual Studio 2012"

Для получения дополнительной информации: http://msdn.microsoft.com/en-us/data/jj591621.aspx

Я думаю, что вы говорите о коде EF, во-первых, это цитата из хорошей статьи

По соглашению DbContext создал базу данных для вас.

Если доступен локальный экземпляр SQL Express (установлен по умолчанию вместе с Visual Studio 2010), то Code First создаст базу данных для этого экземпляра. Если SQL Express недоступен, Code First попытается использовать LocalDb (устанавливается по умолчанию вместе с Visual Studio 2012).) База данных названа в честь полностью определенного имени производного контекста, в нашем случае это CodeFirstNewDatabaseSample.BloggingContext Это только соглашения по умолчанию, и существуют различные способы изменить базу данных, которую использует Code First, более подробную информацию можно найти в разделе Как DbContext Открывает тему подключения модели и базы данных.

Но вы всегда можете войти, чтобы изменить настройки...

Вот полная статья http://msdn.microsoft.com/en-us/data/jj193542.aspx

и здесь

Другие способы изменить базу данных

Существует ряд других способов указать, к какой базе данных следует подключаться. Мы расскажем об этом более подробно в следующем посте.

Строка соединения App.config Создайте строку соединения в файле App.Config с тем же именем, что и ваш контекст. DbConnection В DbContext есть конструктор, который принимает DbConnection. Замените соглашение по умолчанию Соглашение, используемое для поиска базы данных на основе имени контекста, является широким параметром AppDomain, который можно изменить с помощью статического свойства System.Data.Entity.Database.DbDatabase.DefaultConnectionFactory.

из этой статьи: http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-code-first-walkthrough.aspx

Ты видел это? Что такое строка подключения для localdb для версии 11

Взгляните на папку App_Data. Это местоположение по умолчанию.

"Содержит файлы данных приложения, включая файлы базы данных.mdf, файлы XML и другие файлы хранилища данных. Папка App_Data используется ASP.NET для хранения локальной базы данных приложения, такой как база данных для поддержки информации о членстве и роли".

http://msdn.microsoft.com/en-us/library/ex526337(v=vs.100).aspx

Другие вопросы по тегам