Here I already explained what is necessary for creating first step in Mef.
Right click on references choose Manage NuGet Packages

Install Entity Framework

In my case I added a folder, and I called it a model, there I created new class which I called PersonModel

Person model code:
public class PersonModel
{
[Key]
public int PersonId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public DateTime BirthDate { get; set; }
}
public class MyTableDBContext : DbContext
{
public DbSet MyTable { get; set; }
}
In App.config add connection string like:
<connectionStrings>
<add name="MyTableDBContext" connectionString="Data Source=myServer;
Initial Catalog=myDb;
Integrated Security=False;
Persist Security Info=True;
User ID=myUser;
Password=myPass"
providerName="System.Data.SqlClient" />
</connectionStrings>
Whole code for export in my case looks like:
using System;
using System.ComponentModel.Composition;
using DbToJson.Model;
using System.Linq;
namespace DbToJson
{
public interface IDbToJson
{
void Seed();
string DbToJson();
}
[Export(typeof(IDbToJson))]
public class DbToJsonMef : IDbToJson
{
public string DbToJson()
{
var db = new MyTableDBContext();
var records = db.MyTable.ToList();
string myJson = "";
foreach (var record in records)
{
if (myJson == "")
{
myJson = "[" +
"{'PersonId': '" + record.PersonId + "'" +
"', 'FirstName': '" + record.FirstName + "'" +
"', 'LastName': '" + record.LastName + "'" +
"', 'BirthDate': '" + record.BirthDate + "'" +
"}";
}
else
{
myJson = myJson +
"{'PersonId': '" + record.PersonId + "'" +
"', 'FirstName': '" + record.FirstName + "'" +
"', 'LastName': '" + record.LastName + "'" +
"', 'BirthDate': '" + record.BirthDate + "'" +
"}";
;
}
}
myJson = myJson + "]";
return myJson;
}
public void Seed()
{
using (var db = new MyTableDBContext())
{
db.MyTable.Add(new PersonModel
{
FirstName = "Stanko",
LastName = "Milosev",
BirthDate = DateTime.Now
});
db.MyTable.Add(new PersonModel
{
FirstName = "John",
LastName = "Doe",
BirthDate = DateTime.Now
});
db.MyTable.Add(new PersonModel
{
FirstName = "John",
LastName = "Lennon",
BirthDate = DateTime.Now
});
db.SaveChanges();
}
}
}
}
I made two parts, one I called seed, that one I need to fill database with some data, the other method is for displaying data in JSON.
Now import looks like:
using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using DbToJson;
namespace SeedAndConvertToJson
{
class Program
{
private CompositionContainer _container;
[Import(typeof(IDbToJson))]
private IDbToJson dbToJson;
private Program()
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Program).Assembly));
catalog.Catalogs.Add(new DirectoryCatalog(@"../../lib"));
_container = new CompositionContainer(catalog);
try
{
this._container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
Console.WriteLine(compositionException.ToString());
}
}
static void Main(string[] args)
{
Program p = new Program();
p.dbToJson.Seed();
Console.WriteLine(p.dbToJson.DbToJson());
Console.ReadKey();
}
}
}
For the import part we also need to install Entity Framework