public void AppendRowPoco( [Excel( Path = path, WorksheetName = worksheetName, TableName = tableName)] out SamplePoco row) { row = GetRangeAsPocoArray()[0]; }
public void XmlBlob() { MonkeyOrm.Settings.Interceptors.UnknownValueType = SerializeToXml; this.ConnectionFactory().Execute( @"CREATE TABLE `Test` (`Id` INT NOT NULL,`Data` INT,`Poco` TEXT, PRIMARY KEY (`Id`)) ENGINE=InnoDB"); var containsPoco = new SamplePoco { Astring = "hello" }; this.ConnectionFactory().Save("Test", new { Id = 10, Data = 5, Poco = containsPoco }); dynamic result = this.ConnectionFactory().ReadOne("SELECT Id, Data, Poco FROM Test"); Assert.AreEqual(10, result.Id); Assert.AreEqual(5, result.Data); Assert.AreEqual(SerializeToXml(containsPoco), result.Poco); }
static void Main() { var obj1 = new SamplePoco { Field1 = 123 }; var obj2 = new SamplePoco { Field2 = "abc" }; var merged = Merger.Merge(obj1, obj2); Console.WriteLine(merged.Field1); Console.WriteLine(merged.Field2); }
public void BinaryBlob() { MonkeyOrm.Settings.Interceptors.UnknownValueType = SerializeToBinary; this.ConnectionFactory().Execute( @"CREATE TABLE `Test` (`Id` INT NOT NULL,`Data` INT,`Poco` VARBINARY(512), PRIMARY KEY (`Id`)) ENGINE=InnoDB"); var containsPoco = new SamplePoco { Astring = "hello" }; this.ConnectionFactory().Save("Test", new { Id = 10, Data = 5, Poco = containsPoco }); dynamic result = this.ConnectionFactory().ReadOne("SELECT Id, Data, Poco FROM Test"); Assert.AreEqual(10, result.Id); Assert.AreEqual(5, result.Data); Assert.AreEqual(SerializeToBinary(containsPoco), result.Poco); }
static void Main(string[] args) { var exeDir = AppDomain.CurrentDomain.BaseDirectory; var dbPath = $"{exeDir}db.sqlite3"; var connStr = $"DATA Source={dbPath}"; using (var connection = new SQLiteConnection(connStr)) { using (var context = new ApplicationDbContext(connection)) { // providerNameをコードを使って取得する。 // コードを使わずに、直接"System.Data.SQLite"を使ってもいい // https://stackoverflow.com/questions/36060478/dbmigrator-does-not-detect-pending-migrations-after-switching-database var internalContext = context.GetType().GetProperty("InternalContext", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(context); var providerName = (string)internalContext.GetType().GetProperty("ProviderName").GetValue(internalContext); // Migratorが使うConfigurationを生成する。 // TargetDatabaseはDbMigratorの方ではなく、Configurationの方に設定しないと効果が無い。 var configuration = new Configuration() { TargetDatabase = new DbConnectionInfo(context.Database.Connection.ConnectionString, providerName) }; // DbMigratorを生成する var migrator = new DbMigrator(configuration); // EF6.13では問題ないが、EF6.2の場合にUpdateのタイミングで以下の例外が吐かれないようにする対策 // System.ObjectDisposedException: '破棄されたオブジェクトにアクセスできません。 // オブジェクト名 'SQLiteConnection' です。' // https://stackoverflow.com/questions/47329496/updating-to-ef-6-2-0-from-ef-6-1-3-causes-cannot-access-a-disposed-object-error/47518197 var _historyRepository = migrator.GetType().GetField("_historyRepository", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(migrator); var _existingConnection = _historyRepository.GetType().BaseType.GetField("_existingConnection", BindingFlags.Instance | BindingFlags.NonPublic); _existingConnection.SetValue(_historyRepository, null); // Migrationを実行する。 migrator.Update(); // データベースにアクセスして保存する例 if (context.Samples.Count() == 0) { var dummyItem = new SamplePoco() { Id = 1, Name = "Dummy" }; context.Samples.Add(dummyItem); context.SaveChanges(); } // データベースにアクセスして保存する例 if (context.Tests.Count() == 0) { var dummyItem = new TestPoco() { Id = 1, Name = "Dummy" }; context.Tests.Add(dummyItem); context.SaveChanges(); } } } }