K-MUG User Group Meeting On 20th December – Kochi

Standard
K-MUG Logo

K-MUG Logo

Kerala Microsoft User Group (K-MUG) is conducting monthly UG meeting on 20th December 2014, Kochi

Venue:
Startup Village, Kinfra Hi-Tech Park, Kalamassery, Kochi, Kerala.

Agenda

  • 02:00 – 02:10 Community updates
  • 02:10 – 02:50 C# 6.0 – New Features by Anuraj P
  • 02:50 – 03:30 Object/Relational Impedance Mismatch by Aravindan M P
  • 03:30 – 03:40 Tea Break & Networking (10 min)
  • 03:40 – 04:20 Microsoft and Open Source by Praveen Nair
  • 04:20 – 05:00 Azure Service Bus by Shiju Varghese

You can find more details on K-MUG event page, you can register here.

Command line scaffolding for ASP.NET 5

Standard

Last K-MUG Session, there was a demo related to ASP.NET MVC scaffolding. This post is about scaffolding support in ASP.NET 5. This post uses K runtime for scaffolding, you can do it using Visual Studio 2015 Preview as well.

  • Modify project.json, add “Microsoft.Framework.CodeGenerators.Mvc”: “1.0.0-*” under dependencies.
  • Add “gen”: “Microsoft.Framework.CodeGeneration”, under commands
  • You are done with the configurations. Updated project.json file will look like this.
    {
      "dependencies": {
        "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
        "Microsoft.AspNet.Hosting": "1.0.0-beta1",
        "Microsoft.AspNet.Mvc": "6.0.0-beta1",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta1",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-*",
        "EntityFramework.SQLite": "7.0.0-*",
        "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*",
        "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-*",
        "Microsoft.AspNet.StaticFiles": "1.0.0-*"
      },
      "commands": {
        "webListener": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5010",
        "gen": "Microsoft.Framework.CodeGeneration"
      },
      "frameworks": {
        "aspnet50": {},
        "aspnetcore50": {}
      }
    }
    
  • Execute KVM Upgarde command in command prompt, to upgarde your K Runtime.
  • Now execute KPM Restore command in command prompt. It will restore all the required nuget packages for scaffolding.
  • To scaffold the controllers and view, you need to execute the following command – “k gen controller -m TaskItem -dc TaskContext“, where TaskItem is the model class, and TaskContext is the DBContext. (As I am using SQLite, I have created DBContext class, if you are using SQL Server, you don’t require this, scaffolder will generate it for you.) Here is the TaskContext class.
    public class TaskContext : DbContext
    {
    	public DbSet<TaskItem> Tasks { get; set; }
    	protected override void OnConfiguring(DbContextOptions builder)
    	{
    		builder.UseSQLite("Filename=tasksDb.sqlite;");
    	}
    
    	protected override void OnModelCreating(ModelBuilder builder)
    	{
    		builder.Entity<TaskItem>().Key(t => t.Id);
    		base.OnModelCreating(builder);
    	}
    }
    
    

Here is the generated output.

COMMAND LINE SCAFFOLDING FOR ASP.NET 5

COMMAND LINE SCAFFOLDING FOR ASP.NET 5

Customizing scaffolding templates.

Similar to previous versions of MVC, you can customize the templates by modifying the templates. In old versions of MVC, you can find the templates under “C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates” folder, but in ASP.NET 5, NuGet packages are stored on a per-user basis by default. So you can the scaffolding under following location – C:\Users\\.kpm\packages\Microsoft.Framework.CodeGenerators.Mvc\1.0.0-beta1\Templates\, you can modify the contents of the files, and you can re-generate using -f (force) option.

k gen controller -f -m TaskItem -dc TaskContext

Happy Programming :)

How to use SQLite in ASP.NET 5

Standard

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. Most of the ASP.NET 5 tutorials / articles, SQL Server is used. In this post I am explaining about how to use SQLite with Entity Framework 7.0.

First you need to modify the project.json file, and need to add SQLite and Entity Framework dependencies. (“EntityFramework.SQLite”: “7.0.0-*”),the project.json, dependencies section will look like this.

{
    "dependencies": {
        "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
        "Microsoft.AspNet.Hosting": "1.0.0-beta1",
        "Microsoft.AspNet.Mvc": "6.0.0-beta1",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta1",
	"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-*",
	"EntityFramework.SQLite": "7.0.0-*"
    }
} 

Now you need to create DbContext class. If you are using SQL Server, you can generate it using scaffolding(For SQLite, it did worked for me.) Here is minimal DbContext class and the model class I have created.

using System;
using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Metadata;

public class Message
{
	public Guid Id { get; set; }
	public string Content { get; set; }
	public DateTime CreatedOn { get; set; }
	public string CreatedBy { get; set; }
}

public class HelloWorldContext : DbContext
{
	public DbSet<Message> Messages { get; set; }
	protected override void OnConfiguring(DbContextOptions builder)
	{
		builder.UseSQLite("Filename=messagedb.sqlite;");
	}

	protected override void OnModelCreating(ModelBuilder builder)
	{
		builder.Entity<Message>().Key(m => m.Id);
		base.OnModelCreating(builder);
	}
}

As you are using EF code first (creating the DB on the fly), you need to add the following code in the constructor of the Startup.cs, which will ensure SQLite Db is created, it is similar to Database Initializer classes in Entity Framework.

using(var context = new HelloWorldContext())
{
	context.Database.EnsureCreated();
}

This method won’t throw exception even if DB exists. Now you can write simple EF insert statement to insert data to the Table.

var helloWorldContext = new HelloWorldContext();
helloWorldContext.Messages.Add(new Message() {
	Id = Guid.NewGuid(),
	Content = "Hello World",
	CreatedOn = DateTime.Now,
	CreatedBy = "Anuraj" });
helloWorldContext.SaveChanges();

In the next post I will try explain how to scaffold controllers and views in ASP.NET 5 with SQLite.

Happy Programming :)

Expression Bodied Functions and Properties in C# 6.0

Standard

Expression bodied functions are another syntax simplification in C# 6.0. These are functions with no statement body. Instead, you implement them with an expression, similar to Lamda expressions.

class Calculator
{
    public int Add(int a, int b) => a + b;
    public int Subtract(int a, int b) => a - b;
}

As with most of the features found in C# 6.0, they’re intended to provide a simplified syntax for cases where the implementation is simple. The return type of the expression should match the return type identified in the function declaration. Void methods, don’t return anything. The expression bodied simplification also available for properties (getter only).