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