Inserting in non identity ID column:

Table:

CREATE TABLE [dbo].[TestTable](

[Id] [int] NOT NULL,

[Name] [nvarchar](50) NULL,

CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Model:

using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;

namespace NoIdent.Models

{

	[Table("TestTable")]
	public class TestTable

	{

		[DatabaseGenerated(DatabaseGeneratedOption.None)]
		public int Id { get; set; }
		public string Name { get; set; }

	}

	public class testNoIdentEntities : DbContext

	{	

		public DbSet TestTable { get; set; }

	}

}

Without [Table("TestTable")], EF will create TestTableS - EF always add S (plural)

[DatabaseGenerated(DatabaseGeneratedOption.None)] is mandatory, to tell EF that ID is not identity

Create controller with scaffolding. Modify Create and Index view:

Create:

	<fieldset>

		<legend>TestTable</legend>

		<div class="editor-label">
			@Html.LabelFor(model => model.Id)
		</div>

		<div class="editor-field">
			@Html.EditorFor(model => model.Id)
			@Html.ValidationMessageFor(model => model.Id)
		</div>

		<div class="editor-label">
			@Html.LabelFor(model => model.Name)
		</div>

		<div class="editor-field">
			@Html.EditorFor(model => model.Name)
			@Html.ValidationMessageFor(model => model.Name)
		</div>

		<p>
			<input type="submit" value="Create" />
		</p>
	</fieldset>

Index:

<table>
	<tr>
		<th>
			Id
		</th>

		<th>
			Name
		</th>

		<th></th>

	</tr>

	@foreach (var item in Model) {
		<tr>
			<td>
				@Html.DisplayFor(modelItem => item.Id)
			</td>
	
			<td>
				@Html.DisplayFor(modelItem => item.Name)
			</td>	
			
			<td>
				@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
				@Html.ActionLink("Details", "Details", new { id=item.Id }) |
				@Html.ActionLink("Delete", "Delete", new { id=item.Id })
			</td>
		</tr>
	}

</table>

and that's all folks!

If your table look like:
CREATE TABLE [dbo].[_Partner](
	[Sifra] [int] NOT NULL,
	[Naziv] [nvarchar](70) NULL,
	[Mesto] [nvarchar](50) NULL,
	[Pib] [nvarchar](20) NULL,
	[Adresa] [nvarchar](50) NULL,
	[Region1] [int] NULL,
	[Region2] [int] NULL,
	[Region3] [int] NULL,
	[HRabat] [decimal](18, 2) NULL,
 CONSTRAINT [PK__Partner] PRIMARY KEY CLUSTERED 
(
	[Sifra] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
Then your model should look like:
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;

namespace MvcMovie.Models
{
    [Table("_Partner")]
    public class Partner
    {
      [Key]
      public int Sifra { get; set; }
      public string Naziv { get; set; }
      public string Mesto { get; set; }
      public string Pib { get; set; }
      public string Adresa { get; set; }
      public int? Region1 { get; set; }
      public int? Region2 { get; set; }
      public int? Region3 { get; set; }
      public decimal? HRabat { get; set; }
    }

    public class PartnerDBContext : DbContext
    {
        public DbSet Partners { get; set; }
    }
}

Where int? and decimal? are fields with NULL values.

One example of connection string in web.config is like:

    
If you have for name of table something like _Partner, like me :), then use [Table("_Partner")], for Key [Key]... Using System.ComponentModel.DataAnnotations From here.

When you do any change in your model then you have to rebuild solution.

My Web.config connection string looks like:
 
    

 

Tutorial for getting started with ASP.NET MVC 3 you can find here.

Subcategories