基本上我是DB先设计好的,所以就按现存在的table去写程式。
1.Web.config里配置Db连接字串,Connection String Name为DefaultConnection
<connectionStrings> <!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-TLT-20150912072507.mdf;Initial Catalog=aspnet-TLT-20150912072507;Integrated Security=True" providerName="System.Data.SqlClient" />--> <add name="DefaultConnection" connectionString="Server=120.25.**.**;Database=Log4Net;uid=Log4Net;pwd=*******;" providerName="System.Data.SqlClient" /> </connectionStrings>
2.在Models里新建一个名为Log的model,如果没有指定table,entity framework会默认在DB里建名字为models的table,也就是后缀多一个s。不过我是已经存在的表,所以会给实体指定一个tablename,可以通过[Table("Log")]这种方式,如下:
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Web; namespace TLT.Models { //[Table("Log")] public class Log { public Int32 ID { get; set; } public DateTime Date { get; set; } public string Thread { get; set; } public string Level { get; set; } public string Logger { get; set; } public string Message { get; set; } } }
3.model建完了,接下去最重要的就是要有一个DbContext,新建一个目录DAL,增加一个继承DbContext的类ApplicationDbContext.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using TLT.Models; using System.Data.Entity; namespace TLT.DAL { public class ApplicationDbContext : DbContext { public ApplicationDbContext() : base("DefaultConnection") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Log>().ToTable("Log"); } public DbSet<Log> Log { get; set; } } }
第一个构造函数的base里的DefaultConnection就是刚刚我们在Web.config配置的DB连接字串名称,在OnModelCreating里,我们可以给每一个model指定数据库中的表。
至此已经基本完成,可以用下面的方式测试是否可以读取数据。
// GET: Log public ActionResult Index() { using (ApplicationDbContext db = new ApplicationDbContext()) { var log = db.Log.ToList(); return View(log); } }