Невозможно получить метаданные
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; }
}
}
Here is my web.config setup...
<connectionStrings>
<add name="BTDContext" connectionString="Server=localhost;Port=3306;Database=btd;User Id=root;Password=mypassword;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
The database AND tables already exist...
I'm still pretty new with mvc but was using this tutorial
Приложение работает нормально ... однако, когда я пытаюсь добавить контроллер, используя Product (BTD.Data) в качестве класса модели и BTDContext (BTD.DataContext) в качестве класса контекста данных, я получаю следующую ошибку:
Unable to retrieve metadata for BTD.Data.Product using the same DbCompiledModel to create context against different types of database servers is not supported. Instead, create a separate DbCompiledModel for each type of server being used.
Я в полной растерянности - я искал в Google почти все варианты сообщения об ошибке выше, о котором я могу думать, но безрезультатно.
Here are the things i can verify...
MySql is working properly I'm using MySql Connector version 6.5.4 and have created other ASP.net web forms + entity framework applications with ZERO problemsI have also tried including/removing this in my 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 - I Я был очень взволнован, чтобы начать работу над этим, но теперь я довольно обескуражен - я действительно ценю любую помощь / руководство по этому вопросу!
Также обратите внимание - я использую Entityframework от Nuget ...
Another Note
Я использовал шаблон Visual Studio по умолчанию, который создает ваш проект MVC со страницами учетной записи и другим материалом. Я ПРОСТО удалил все ссылки на добавленные файлы, потому что они пытались использовать & quot; DefaultConnection & quot; который не существует - поэтому я подумал, что эти файлы могут быть причиной ошибки - однако все же не повезло после их удаления -
Я просто хотел, чтобы все знали, что я использую шаблон проекта Visual Studio MVC, который предварительно создает кучу файлов. Я буду пытаться воссоздать все это из пустого проекта MVC, в котором нет этих файлов - я обновлю его, как только протестирую
UPDATE TO USING VS MVC Basic Template: Та же самая ошибка привела - все еще нет решения
ANOTHER PERSON EXPERIENCING THE SAME PROBLEM
Прямо здесь есть еще один вопрос, связанный с stackoverflow - однако я попробовал его решение безрезультатно - может быть, кто-то еще, кто имеет эту же проблему, может извлечь выгоду из ссылки
UPDATE
Недавно я только что попытался поместить это в MS Sql Server, и леса представлений добавляются нормально без ошибок - поэтому я не уверен, является ли это моей базой данных MySql или строкой соединения или чем-то ... сводит меня с ума ...
Other References
Похоже, что у кого-то еще есть те же проблемы, что и у меня - единственное различие заключается в том, что они используют сервер SQL - я попытался настроить весь свой код, чтобы следовать рекомендациям поэтот стекопоток вопрос / ответ здесь но пока безрезультатно
POSSIBLE FIX???
Так что это странно ... после подключения его к MS Sql Server и добавления контроллера, а затем возврата строки подключения к MySql, это на самом деле работает с MySql ... какого черта! ??
Таким образом, кажется, что, когда вы пытаетесь добавить свой контроллер и скаффолдинг представления (это правильная фраза?) Добавляется С строкой соединения mysql, это терпит неудачу ... однако, если вы подключаете его к базе данных sql server, генерируйте скаффолдинг / контроллер, а затем вернуться к строке подключения MySQL это работает ....?!?!