环境准备
1.Install-package EntityFramework
2.建立model模型:可以用ODA.net(DataFirst ,codeFirst),当然也可以LINQ to SQL类,也可以手动创建
namespace pxtest.Models{ public partial class PRotData { [Key,Column(Order=1)] public DateTime ActualDateTime { get; set; } public string Identifier { get; set; } [Key, Column(Order = 2)] public string ActualTrackingPoint { get; set; } public string PLC { get; set; } public string SkidNo { get; set; } public string HoleCode { get; set; } public string LotNumber { get; set; } public string Color { get; set; } public string Model { get; set; } public string BodyPaintCounter { get; set; } public string PrimerColor { get; set; } public string TimeSec { get; set; } }}
3.建立Context:context可以自动创建,也可以手动创建。
public class pxContext:DbContext { public pxContext() : base("name=DefaultConnection") { } public virtual DbSet<TrackingPointCode> TrackingPointCodes { get; set; } public virtual DbSet<Production_plan> Production_plans { get; set; } public virtual DbSet<ProtData> ProtDatas { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { // base.OnModelCreating(modelBuilder); modelBuilder.Entity<ProtData>().HasKey(t => new { t.ActualDateTime, t.ActualTrackingPoint }); modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } }
modelBuilder.Entity<ProtData>().HasKey(t => new { t.ActualDateTime, t.ActualTrackingPoint }); 为某表设置复合主键
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();使调用的表为单数形式
4.建立apicontroller
创建的方法可以用web api 空建,web api 操作(entity framework)的创建。
4.1 在global.cs中
public class WebApiapplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); GlobalConfiguration.Configuration.Formatters.xmlFormatter.SupportedMediaTypes.Clear(); } }
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();支持Json;
4.2
private pxContext db = new pxContext(); // GET api/ProtDatas public IQueryable<ProtData> GetProtDatas() { return db.ProtDatas; } // GET api/ProtDatas public IQueryable<ProtData> GetProtDatas(string pt) { return db.ProtDatas.Where(p=>p.ActualTrackingPoint==pt); } // GET api/ProtDatas/5 public IQueryable<ProtData> GetProtDatas(string pt, int startUTC) { //1481459940000 1481459940000000 DateTime dt = new DateTime(1970, 1, 1).AddHours(8).AddSeconds(startUTC); DateTime curdt = DateTime.Now; IQueryable<ProtData> protdatas= db.ProtDatas.Where(p=>p.ActualTrackingPoint==pt && p.ActualDateTime>=dt && p.ActualDateTime<=curdt); return protdatas; }
5.对api rest的管理
加入swashbuckle-Swagger for WebApi
加入Swagger UI for .Net
项目属性中的生成xml被勾选
加入后更改SwaggerConfig.cs中的设置
c.IncludeXmlComments(GetXmlCommentsPath());
private static string GetXmlCommentsPath() { return string.Format("{0}/bin/px.XML", System.AppDomain.CurrentDomain.BaseDirectory); // throw new System.NotImplementedException(); }
对SwaggerNet.cs中进行注示
//[assembly: WebActivator.PreApplicationStartMethod(typeof(px.App_Start.SwaggerNet), "PreStart")]//[assembly: WebActivator.PostApplicationStartMethod(typeof(px.App_Start.SwaggerNet), "PostStart")]
新闻热点
疑难解答