Entity Framework Core Sample App
In order to run create db migration
PM > Add-Migration Init
.
.
.
PM > Script-Migration
.
.
.
PM> Update-Database
Add these to dependencies:
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final",
"Microsoft.EntityFrameworkCore.Design": "1.1.0-preview1-final"
Add to tools:
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final"
},
Sample Entities:
public class SampleDocument
{
public Guid Id { get; set; }
public string StringField { get; set; }
public int IntField { get; set; }
public IEnumerable<InnerDocument> InnerDocuments { get; set; }
public SampleDocument()
{
}
}
public class InnerDocument
{
public Guid Id { get; set; }
public string InnerStringField { get; set; }
public int InnerInt { get; set; }
public Guid ParentId { get; set; }
public InnerDocument()
{
}
}
Add DB Context:
public class SampleDocumentDbContext : DbContext
{
public DbSet<SampleDocument> SampleDocuments { get; set; }
public DbSet<InnerDocument> InnerDocuments { get; set; }
public SampleDocumentDbContext(DbContextOptions<SampleDocumentDbContext> options)
: base(options)
{
}
}
Add Repository:
public interface ISampleRepository
{
IEnumerable<SampleDocument> GetAll();
SampleDocument GetById(Guid id);
SampleDocument Add(SampleDocument document);
}
public class SampleRepository : ISampleRepository
{
private readonly SampleDocumentDbContext context;
public SampleRepository(SampleDocumentDbContext context)
{
this.context = context;
}
public IEnumerable<SampleDocument> GetAll()
{
return context.SampleDocuments.Include(d => d.InnerDocuments);
}
public SampleDocument GetById(Guid id)
{
return context.SampleDocuments.Include(d => d.InnerDocuments).Single(d => d.Id == id);
}
public SampleDocument Add(SampleDocument document)
{
context.Add(document);
context.SaveChanges();
return document;
}
}
In StartUp:
public void ConfigureServices(IServiceCollection services)
{
// Add The repository
// Add DbContext
services.AddScoped<ISampleRepository, SampleRepository>();
services.AddDbContext<SampleDocumentDbContext>(options =>
options.UseSqlServer("Server=.\\SQLEXPRESS;Database=EFCoreSample;Trusted_Connection=true;MultipleActiveResultSets=true"));
}