MVC4 + Entity Framework 4.4 + MySql + POCO/Code First
Я настраиваю вышеуказанную конфигурацию. Вот мои классы:
namespace BTD.DataContext
{
public class BTDContext : DbContext
{
public BTDContext()
: base("name=BTDContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
}
public DbSet<Product> Products { get; set; }
public DbSet<ProductImage> ProductImages { get; set; }
}
}
namespace BTD.Data
{
[Table("Product")]
public class Product
{
[Key]
public long ProductId { get; set; }
[DisplayName("Manufacturer")]
public int? ManufacturerId { get; set; }
[Required]
[StringLength(150)]
public string Name { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required]
[StringLength(120)]
public string URL { get; set; }
[Required]
[StringLength(75)]
[DisplayName("Meta Title")]
public string MetaTitle { get; set; }
[DataType(DataType.MultilineText)]
[DisplayName("Meta Description")]
public string MetaDescription { get; set; }
[Required]
[StringLength(25)]
public string Status { get; set; }
[DisplayName("Create Date/Time")]
public DateTime CreateDateTime { get; set; }
[DisplayName("Edit Date/Time")]
public DateTime EditDateTime { get; set; }
}
[Table("ProductImage")]
public class ProductImage
{
[Key]
public long ProductImageId { get; set; }
public long ProductId { get; set; }
public long? ProductVariantId { get; set; }
[Required]
public byte[] Image { get; set; }
public bool PrimaryImage { get; set; }
public DateTime CreateDateTime { get; set; }
public DateTime EditDateTime { get; set; }
}
}
Вот моя настройка web.config...
<connectionStrings>
<add name="BTDContext" connectionString="Server=localhost;Port=3306;Database=btd;User Id=root;Password=mypassword;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
- База данных И таблицы уже существуют...
- Я все еще довольно новичок в mvc, но использовал этот учебник
Приложение строит отлично... однако, когда я пытаюсь добавить контроллер с помощью Product (BTD.Data) в качестве моего класса модели и BTDContext (BTD.DataContext) в качестве моего класса контекста данных, я получаю следующую ошибку:
Невозможно получить метаданные для BTD.Data.Product, используя тот же DbCompiledModel для создания контекста для разных типов баз данных серверы не поддерживаются. Вместо этого создайте отдельный DbCompiledModel для каждого используемого сервера.
Я нахожусь в полной потере - я просмотрел google почти с каждым изменением этого сообщения об ошибке выше, о котором я могу думать, но безрезультатно.
Вот что я могу проверить...
- MySql работает нормально
- Я использую MySql Connector версии 6.5.4 и создал другие веб-формы ASP.net + приложения с фреймворком с проблемами ZERO.
Я также попытался включить/удалить это в своем web.config:
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"/>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
Я буквально работал над этой ошибкой в течение нескольких дней - я должен сейчас сказать, что я готов заплатить кому-то, чтобы решить ее. Ничего, шутка... Мне бы очень понравилось использовать MVC 4 и Razor - я был так взволнован, чтобы начать с этого, но теперь я очень обескуражен - я действительно ценю любую помощь/руководство по этому поводу.
Также обратите внимание - я использую Entityframework из Nuget...
Другое примечание
Я использовал шаблон визуальной студии по умолчанию, который создает ваш проект MVC со страницами учетных записей и другими материалами. Я просто удалил все ссылки на добавленные файлы, потому что они пытались использовать "DefaultConnection", которого не было, поэтому я думал, что эти файлы могут быть причиной того, что вызывало ошибку, - однако по-прежнему не повезло после их удаления -
Я просто хотел, чтобы все знали, что я использую шаблон проекта визуальной студии MVC, который предварительно создает кучу файлов. Я буду пытаться воссоздать все это из пустого проекта MVC, у которого нет этих файлов - я обновлю это, как только я проверю, что
ОБНОВЛЕНИЕ К ИСПОЛЬЗОВАНИЮ Базового шаблона VS MVC: Приведенная же ошибка - до сих пор нет решения
ДРУГОЙ ЧЕЛОВЕК, ОПЫТАЯ ЖЕ ЖЕ ПРОБЛЕМУ
Прямо здесь есть другой вопрос о стеке, который имитирует мой - однако я попробовал его решение безрезультатно - возможно, кто-то другой, у кого такая же проблема, может извлечь выгоду из ссылки
UPDATE
Недавно я просто попробовал поместить это в MS Sql Server, а вид scaffolding добавлен отлично, без ошибок - поэтому я не уверен, что его база данных MySql или строка подключения или что... вождение меня в орехи..
Другие ссылки
Похоже, что у кого-то есть те же проблемы, с которыми я столкнулся - единственное различие заключается в том, что они используют sql-сервер - я попытался настроить весь мой код, чтобы следить за предложениями this questionoverflow question/ответьте здесь, но все же безрезультатно
ВОЗМОЖНОЕ ИСПРАВЛЕНИЕ
Итак, это странно... после подключения к серверу MS Sql и добавления контроллера, а затем вернувшего строку подключения к MySql, на самом деле это РАБОТАЕТ с MySql... что за черт!??
Итак, кажется, что когда вы пытаетесь добавить свой контроллер и видимые леса (это то, что правильная фраза?) добавляется с строкой соединения mysql, она терпит неудачу... однако, если вы подключите ее к серверу db сервера, сгенерируйте строительные леса/контроллер, затем вернитесь к строке подключения mysql, которая работает...?!?!