Я работаю через 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