I had two identical database with same structure. ( call it dbase1 and dbase2 )
dbase1 is use for real data and dbase2 is use for training , testing purpose.
I would like to just switch between the two database dynamically on my application.
I had follow some generated xml hint at past discussion - one "DataContext"
viewtopic.php?f=31&t=24588#p83144
But, I still end up with duplicate code:
Dbase1:
Stream contextStream = System.IO.File.OpenRead("DataContext1.xml");
Devart.Data.Linq.Mapping.MappingSource mappingSource =
Devart.Data.Linq.Mapping.XmlMappingSource.FromStream(contextStream);
Dbase1DataContext dc = new Dbase1DataContext(iconnect, mappingSource);
var query = from it in dc.Categories
orderby it.Id
select it;
foreach (Dbase1Context.Category cat in query)
textBox.Text += i++.ToString() + " " + cat.Name + "\n";
DBase2:
Stream contextStream = System.IO.File.OpenRead("DataContext2.xml");
Devart.Data.Linq.Mapping.MappingSource mappingSource =
Devart.Data.Linq.Mapping.XmlMappingSource.FromStream(contextStream);
Dbase2DataContext dc = new Dbase2DataContext(iconnect, mappingSource);
var query = from it in dc.Categories
orderby it.Id
select it;
foreach (Dbase2Context.Category cat in query)
textBox.Text += i++.ToString() + " " + cat.Name + "\n";
One DataContext to use between 2 identical database
-
- Posts: 2
- Joined: Sun 28 May 2017 21:52
Re: One DataContext to use between 2 identical database
1st approach (two different sources, e.g. Oracle and MySQL)
2nd appoach (the same data source, e.g. MySQL in both cases). JIC: if the names of schemas in databases are different, you should clear the schema prefix in the Source attribute of classes (or clear selection of the "Preserve schema name in storage" option in Create Model Wizard)
Code: Select all
static void Main(string[] args)
{
CommonCode(Dbase1ConnString, Dbase1PathToMappingSource);
CommonCode(Dbase2ConnString, Dbase2PathToMappingSource);
}
static void CommonCode(string connString, string pathToMappingSource)
{
var contextStream = System.IO.File.OpenRead(pathToMappingSource);
var mappingSource = Devart.Data.Linq.Mapping.XmlMappingSource.FromStream(contextStream);
var dc = new CommonDataContext(connString, mappingSource);
var query = from it in dc.Categories
orderby it.Id
select it;
foreach (CommonDataContext.Category cat in query)
textBox.Text += i++.ToString() + " " + cat.Name + "\n";
}
Code: Select all
static void Main(string[] args)
{
CommonCode(Dbase1ConnString);
CommonCode(Dbase2ConnString);
}
static void CommonCode(string connString)
{
var contextStream = System.IO.File.OpenRead(commonMappingSource);
var mappingSource = Devart.Data.Linq.Mapping.XmlMappingSource.FromStream(contextStream);
var dc = new CommonDataContext(connString, mappingSource);
var query = from it in dc.Categories
orderby it.Id
select it;
foreach (CommonDataContext.Category cat in query)
textBox.Text += i++.ToString() + " " + cat.Name + "\n";
}
}