Я пытаюсь использовать платформу сущностей, но не могу подключиться к своей базе данных.
Шаги, которые я выполнил:
- Добавить модель данных сущности ADO.NET ивыберите Mysql, введите правильные данные, протестируйте соединение и затем выберите нужную таблицу базы данных
- Visual Studio создала файл с именем «DatabaseContext» и файл для каждой выбранной таблицы.
DatabaseContext:
namespace TranscoopTrips.Database
{
using System.Data.Entity;
public partial class DatabaseContext : DbContext
{
public DatabaseContext()
: base("name=Database1")
{
}
public virtual DbSet<address> addresses { get; set; }
public virtual DbSet<driver> drivers { get; set; }
public virtual DbSet<journey> journeys { get; set; }
public virtual DbSet<vehicle> vehicles { get; set; }
public virtual DbSet<expeditionpoint> expeditionpoints { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<address>()
.Property(e => e.name)
.IsUnicode(false);
modelBuilder.Entity<address>()
.HasMany(e => e.expeditionpoints)
.WithOptional(e => e.address)
.HasForeignKey(e => e.fk_address)
.WillCascadeOnDelete();
modelBuilder.Entity<driver>()
.Property(e => e.name)
.IsUnicode(false);
modelBuilder.Entity<driver>()
.Property(e => e.surname)
.IsUnicode(false);
modelBuilder.Entity<driver>()
.HasMany(e => e.journeys)
.WithRequired(e => e.driver)
.HasForeignKey(e => e.fk_driver);
modelBuilder.Entity<journey>()
.Property(e => e.measureunit)
.IsUnicode(false);
modelBuilder.Entity<journey>()
.Property(e => e.customer)
.IsUnicode(false);
modelBuilder.Entity<journey>()
.HasMany(e => e.expeditionpoints)
.WithOptional(e => e.journey)
.HasForeignKey(e => e.fk_journey)
.WillCascadeOnDelete();
modelBuilder.Entity<vehicle>()
.Property(e => e.plate)
.IsUnicode(false);
modelBuilder.Entity<vehicle>()
.HasMany(e => e.journeys)
.WithRequired(e => e.vehicle)
.HasForeignKey(e => e.fk_vehicle);
}
}
}
Пример класса, сгенерированного автоматически:
namespace TranscoopTrips.Database
{
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
[Table("transcooptrips.driver")]
public partial class driver
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public driver()
{
journeys = new HashSet<journey>();
}
[Column(TypeName = "text")]
[Required]
[StringLength(65535)]
public string name { get; set; }
[Column(TypeName = "text")]
[Required]
[StringLength(65535)]
public string surname { get; set; }
public int id { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<journey> journeys { get; set; }
}
}
Попытка подключения к базе данных в основной программе
using (var db = new DatabaseContext())
{
Console.Write(db.Database.Connection.State); //return always "Closed"
Console.WriteLine();
}
4: Строка подключения, созданная Visual Studio
<connectionStrings>
<add name="Database1" connectionString="server=localhost;user id=root;password=asdasdasd;persistsecurityinfo=True;database=transcooptrips" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
![Files automatically created by Visual Studio](https://i.stack.imgur.com/sgmhh.jpg)
Выход Console.Write(db.Database.Connection.State);
всегда "Закрыт".
Что я сделал не так?