Hi,
I am using this library in my Windows Forms App.
I am retrieving data from a Web Service, I convert each object to an Entity Object, then set its ObjectState.Added.
Then I use repository to Insert the object.
After that, I call unit of work .SaveChanges.
The database is kept empty and no records are being stored!
Here is some code snippets:
```
static class Program
{
[STAThread]
static void Main()
{
#region Global Configuration
StructureMapSettings.Config();
#endregion
// get instance of main service
var _uow = ObjectFactory.GetInstance<IUnitOfWorkAsync>();
var _service = ObjectFactory.GetInstance<IProjectManagementService>();
// Get & Store projects
_service.StoreProjectsInMiddleware(_service.GetProjectsFromMaster());
_uow.SaveChanges();
}
}
```
```
public class StructureMapSettings
{
public static void Config()
{
ObjectFactory.Configure(factory =>
{
factory.For<IDataContextAsync>().Use<MiddlewareDbContext>();
factory.For<IUnitOfWork>().Use<UnitOfWork>();
factory.For<IRepository<Project>>().Use<Repository<Project>>();
factory.For<IProjectManagementService>().Use<ProjectManagementService>();
factory.For<IAppSettings>().Use<DefaultAppSettings>();
});
}
}
```
```
public interface IProjectManagementService : IService<Data.Project>
{
IEnumerable<Data.Project> GetProjectsFromMaster();
void StoreProjectsInMiddleware(IEnumerable<Data.Project> projects);
Data.Project CreateProject(Data.Project project);
}
public class ProjectManagementService : Service<Data.Project>, IProjectManagementService
{
private readonly IRepository<Data.Project> _repository;
public ProjectManagementService(IRepositoryAsync<Data.Project> repository) : base (repository)
{
_repository = repository;
}
public IEnumerable<Data.Project> GetProjectsFromMaster()
{
return (_repository.GetProjectsFromMaster());
}
public void StoreProjectsInMiddleware(IEnumerable<Data.Project> projects)
{
foreach (var p in projects)
{
var project = _repository
.Query(pro => pro.ProjectId.Equals(p.ProjectId, StringComparison.InvariantCultureIgnoreCase))
.Select()
.SingleOrDefault();
// Add it
if (project == null)
{
p.ObjectState = ObjectState.Added;
_repository.Insert(p);
}
else
{
// Update it
p.ObjectState = ObjectState.Modified;
_repository.Update(p);
}
}
}
public Data.Project CreateProject(Data.Project project)
{
throw new System.NotImplementedException();
}
}
```
And repository is:
```
public static class ProjectManagementRepository
{
#region constants
private const string SourceService = "***";
private const string SourceUsername = "***";
private const string SourcePassword = "***";
private const string SourceTemplate = "***";
private const string SourceCode = "***";
private const string SourceWorkspace = "***";
private const string SourceCreatedSince = "***";
private const string SourceStartsWith = "***";
#endregion
private static readonly IAppSettings Settings = ObjectFactory.GetInstance<IAppSettings>();
public static IEnumerable<Project> GetProjectsFromMaster(this IRepository<Project> repository)
{
// open vbc session
var session = VBCConnecter.OpenSession(
Settings.Get(SourceService),
Settings.Get(SourceUsername),
Settings.Get(SourcePassword),
Settings.Get(SourceCode),
false);
// get workspace
var workspace = VBCConnecter.GetWorkspace(session, Settings.Get(SourceWorkspace));
// get docs created after 1/1/2013
var cc = new CriteriaCollection(typeof (Document));
cc.Add(Document._CreatedOn.IsGreaterOrEqual(DateTime.Parse(Settings.Get(SourceCreatedSince))));
cc.Add(Document._ReferenceID.StartsWith(Settings.Get(SourceStartsWith)));
cc.Add(Document._DocumentTemplate.IsEqual(VBCConnecter.GetDocumentTemplate(workspace, Settings.Get(SourceTemplate))));
return Mapper.MapDocumentCollectionToProjects(VBCConnecter.GetDocuments(workspace, cc));
}
}
```
Comments: Answered on Twitter https://twitter.com/LeLong37/status/451032499616247808.
I am using this library in my Windows Forms App.
I am retrieving data from a Web Service, I convert each object to an Entity Object, then set its ObjectState.Added.
Then I use repository to Insert the object.
After that, I call unit of work .SaveChanges.
The database is kept empty and no records are being stored!
Here is some code snippets:
```
static class Program
{
[STAThread]
static void Main()
{
#region Global Configuration
StructureMapSettings.Config();
#endregion
// get instance of main service
var _uow = ObjectFactory.GetInstance<IUnitOfWorkAsync>();
var _service = ObjectFactory.GetInstance<IProjectManagementService>();
// Get & Store projects
_service.StoreProjectsInMiddleware(_service.GetProjectsFromMaster());
_uow.SaveChanges();
}
}
```
```
public class StructureMapSettings
{
public static void Config()
{
ObjectFactory.Configure(factory =>
{
factory.For<IDataContextAsync>().Use<MiddlewareDbContext>();
factory.For<IUnitOfWork>().Use<UnitOfWork>();
factory.For<IRepository<Project>>().Use<Repository<Project>>();
factory.For<IProjectManagementService>().Use<ProjectManagementService>();
factory.For<IAppSettings>().Use<DefaultAppSettings>();
});
}
}
```
```
public interface IProjectManagementService : IService<Data.Project>
{
IEnumerable<Data.Project> GetProjectsFromMaster();
void StoreProjectsInMiddleware(IEnumerable<Data.Project> projects);
Data.Project CreateProject(Data.Project project);
}
public class ProjectManagementService : Service<Data.Project>, IProjectManagementService
{
private readonly IRepository<Data.Project> _repository;
public ProjectManagementService(IRepositoryAsync<Data.Project> repository) : base (repository)
{
_repository = repository;
}
public IEnumerable<Data.Project> GetProjectsFromMaster()
{
return (_repository.GetProjectsFromMaster());
}
public void StoreProjectsInMiddleware(IEnumerable<Data.Project> projects)
{
foreach (var p in projects)
{
var project = _repository
.Query(pro => pro.ProjectId.Equals(p.ProjectId, StringComparison.InvariantCultureIgnoreCase))
.Select()
.SingleOrDefault();
// Add it
if (project == null)
{
p.ObjectState = ObjectState.Added;
_repository.Insert(p);
}
else
{
// Update it
p.ObjectState = ObjectState.Modified;
_repository.Update(p);
}
}
}
public Data.Project CreateProject(Data.Project project)
{
throw new System.NotImplementedException();
}
}
```
And repository is:
```
public static class ProjectManagementRepository
{
#region constants
private const string SourceService = "***";
private const string SourceUsername = "***";
private const string SourcePassword = "***";
private const string SourceTemplate = "***";
private const string SourceCode = "***";
private const string SourceWorkspace = "***";
private const string SourceCreatedSince = "***";
private const string SourceStartsWith = "***";
#endregion
private static readonly IAppSettings Settings = ObjectFactory.GetInstance<IAppSettings>();
public static IEnumerable<Project> GetProjectsFromMaster(this IRepository<Project> repository)
{
// open vbc session
var session = VBCConnecter.OpenSession(
Settings.Get(SourceService),
Settings.Get(SourceUsername),
Settings.Get(SourcePassword),
Settings.Get(SourceCode),
false);
// get workspace
var workspace = VBCConnecter.GetWorkspace(session, Settings.Get(SourceWorkspace));
// get docs created after 1/1/2013
var cc = new CriteriaCollection(typeof (Document));
cc.Add(Document._CreatedOn.IsGreaterOrEqual(DateTime.Parse(Settings.Get(SourceCreatedSince))));
cc.Add(Document._ReferenceID.StartsWith(Settings.Get(SourceStartsWith)));
cc.Add(Document._DocumentTemplate.IsEqual(VBCConnecter.GetDocumentTemplate(workspace, Settings.Get(SourceTemplate))));
return Mapper.MapDocumentCollectionToProjects(VBCConnecter.GetDocuments(workspace, cc));
}
}
```
Comments: Answered on Twitter https://twitter.com/LeLong37/status/451032499616247808.