- Details
- Written by: Stanko Milosev
- Category: MVC 3
- Hits: 4332
If your model look something like:
using System; using System.Data.Entity; using System.ComponentModel.DataAnnotations; using System.Data.Entity.Infrastructure; namespace MvcApplication3.Models { public class MyTable { [Key] public int MyNum { get; set; } public string Name { get; set; } } public class MyTableDBContext : DbContext { public DbSet MyTable { get; set; } } }
Then, your connection string in Web.config must look like:
<add name="MyTableDBContext" connectionString="Data Source=MyPC; Initial Catalog=MyDb; Integrated Security=False; Persist Security Info=True; User ID=myUser; Password=myPass" providerName="System.Data.SqlClient" />
Note that MyTableDBContext is in connection string and defined as DbContext in the model, and Integrated Security is false (true means to Windows Authentication)
- Details
- Written by: Stanko Milosev
- Category: MVC 3
- Hits: 6127
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!
- Details
- Written by: Stanko Milosev
- Category: MVC 3
- Hits: 4254
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 DbSetWhere int? and decimal? are fields with NULL values. One example of connection string in web.config is like:Partners { get; set; } } }