Отношение один-к-одному для СУБД MySql - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю через Entity Framework 6. Я не понимаю, в чем заключалась проблема, пытаясь различными способами создать отношение один к одному, но постоянно выдается исключение System.FormatException: «Входная строка была неправильной формат.". СУБД MySql. Заранее спасибо!

enter code here
public class User
{
    public int Id { get; set; }
    public string Login { get; set; }
    public string Password { get; set; }
    public UserProfile Profile { get; set; }
}
public class UserProfile
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public User User { get; set; }
}

Контекст цитат

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class UserContext : DbContext
{


    public UserContext() : base("connection") { }
    public UserContext(DbConnection existingConnection, bool ContextOwnsConnection) : base(existingConnection, ContextOwnsConnection) { }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        modelBuilder.Entity<User>().HasKey(x => x.Id);
        modelBuilder.Entity<UserProfile>().HasKey(x => x.Id);
        modelBuilder.Entity<UserProfile>().Property(x => x.Id).IsRequired();
        modelBuilder.Entity<User>().Property(x => x.Id).IsRequired();

        modelBuilder.Entity<UserProfile>()
    .HasRequired(p => p.User)
    .WithRequiredPrincipal(c => c.Profile);
        base.OnModelCreating(modelBuilder);
    }
    public DbSet<UserProfile> Users { get; set; }
}

public class ConfigurationUserProfileRelation : EntityTypeConfiguration<UserProfile>
{
    public ConfigurationUserProfileRelation()
    {
        ToTable("UserProfile").HasKey(x => x.Id);

    }
}
public class ConfigurationUserRelation : EntityTypeConfiguration<User>
{
    public ConfigurationUserRelation()
    {
        ToTable("User").HasKey(x => x.Id);
        //HasOptional(x => x.Profile).WithRequired(x => x.User);
    }
}

Программа цитат

public class Program
{ 
    static void Main(string[] args)
    {
        string connectionString = "server=localhost; database=TestProject; uid=root; password=****; port=3306;";

        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            using (UserContext context = new UserContext(connection, false))
            {
                context.Database.Create();
            }
            connection.Open();
            MySqlTransaction transaction = connection.BeginTransaction();
            try
            {
                var user1 = new User { Login = "user1", Password = "123456" };
                var user2 = new User { Login = "user2", Password = "123456" };
                var user3 = new User { Login = "user3", Password = "123456" };
                using (UserContext context = new UserContext(connection, false))
                {
                    context.Database.UseTransaction(transaction);
                    List<UserProfile> users = new List<UserProfile>
                    {
                        new UserProfile{ Name = "Jhon" , LastName = "Walker",Id=user1.Id },
                        new UserProfile{Name = "Jack" , LastName = "Denials",Id=user2.Id },
                        new UserProfile { Name = "Viktor", LastName = "Blud", Id = user3.Id}
                    };
                    context.Users.AddRange(users);
                    context.SaveChanges();
                }
                transaction.Commit();

            }
            catch
            {
                transaction.Rollback(); throw;
            }
        }
    }
}

Необработанное исключение: System.FormatException: входная строка была в неправильном формате. в System.Number.ParseDouble (строковое значение, параметры NumberStyles, NumberFormatInfo numfmt) в System.Convert.ToDouble (строковое значение) в MySql .Data.Entity.MySqlMigrationSqlGenerator.Generate (операция CreateIndexOperation op) в MySql .DE.E. .MySqlMigrationSqlGenerator. <. Ctor> b__22_4 (операция MigrationOperation) в MySql .Data.Entity.MySqlMigrationSqlGenerator.Generate (операции IEnumerable 1 migrationOperations, String providerManifestToken) in System.Data.Entity.Migrations.DbMigrator.GenerateStatements(IList 1, миграция строки) в System.Data.Entity.MigrationsExecuration , VersionedModel targetModel, IEnumerable 1 operations, IEnumerable 1 systemOperations, логическое понижение, логическое авто) в System.Data.Entity.Migrations.DbMigrator.AutoMigrate (StringigrationId, VersionedModel sourceModel, VersionedModel targetModel, логический понижающий класс. .DbMigrator.Upgrade (IEnumerable 1 pendingMigrations, String targetMigrationId, String lastMigrationId) in System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) in System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass42_0.<Update>b__0() in System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) in System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) in System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func 3 createMigrator, ObjectContext objectContext) в System.Data.Entity.Internal.InternalContext.CreateDatabase (ObjectContext objectContext, DatabaseExistenceState существованиеState) в системе .Data.Entity.Database.Create (DatabaseExistenceState существованиеState) в System.Data.Entity.CreateDatabaseIfNotExists 1.InitializeDatabase(TContext context) in System.Data.Entity.Internal.InternalContext.<>c__DisplayClass66_0 1.b__0 () в System.Data.Entity.Internal.InternalContext.PerformInitializationAction (действие «Действие») в System.Data.Entity. .Internal.InternalContext.PerformDatabaseInitialization () в System.Data.Entity.Internal.LazyInternalContext. <> c .b__58_0 (InternalContext c) в действии System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) in System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1) в системе .Data.Entity.Internal.LazyInternalContext.InitializeDatabase () в System.Data.Entity.Internal.InternalContext.Initialize () в System.Data.Entity.Internal. .Linq.InternalSet 1.Initialize() in System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext () в System.Data.Entity.Internal.Linq.InternalSet 1.AddRange(IEnumerable entities) in System.Data.Entity.DbSet 1.AddRange (сущности IEnumerable`1) в TestPro.Program.Main (String [] args) в D : \ Test \ MySqlEntityFramework \ TestPro \ Program.cs: строка 30

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...