C# 实体模型EF关联数据库

来源:互联网 发布:旅游购物 知乎 编辑:程序博客网 时间:2024/06/06 03:30


首先 我们要有对应的数据库 实体对象 也就是类对象

//实体对象类  Model

    public class product    {        /// <summary>        /// 商品信息id  主键        /// </summary>        //[DatabaseGenerated(DatabaseGeneratedOption.None)]  去除自增长        [ProductComm]        public long id        {            get;            set;        }        [ProductComm]        public string name        {            get;            set;        }        /// <summary>        /// 创建时间        /// </summary>        public DateTime ctime        {            get;            set;        }        /// <summary>        /// 0正常  1已删除        /// </summary>        public int s        {            get;            set;        }        [NotMapped]        public string username { get; set; }    }



那么如何去关联数据库呢 

  首先我们要继承DBconent并配置  

前提我们引用 这几个对象

using System.Data.Entity;using System.Data.Entity.ModelConfiguration.Conventions;using System.Data.Entity.Infrastructure;using System.Data.Entity.ModelConfiguration;


    public class ConnectionData : DbContext    {        public ConnectionData()            //数据库配置对象名称            : base("mobileConnection")        {            //this.Database.Log = Logger.Debug; //这里可以记录日志        }        /// <summary>        /// 数据库对象 对应        /// </summary>        public virtual IDbSet<product> ProductInfo { get; set; }        /// <summary>        /// 重写  模型创建方法        /// </summary>        /// <param name="modelBuilder"></param>        protected override void OnModelCreating(DbModelBuilder modelBuilder)        {            // TODO: 在这里写Fluent API            //公约            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();                        //var s = new EntityTypeConfiguration<product>();            //s.ToTable("product");            //s.Property(q => q.username).HasColumnName("name");            //s.Property(q => q.name).HasColumnName("name");            //modelBuilder.Entity<product>().HasKey(t => t.id);            //modelBuilder.Entity<product>().Ignore(t => t.username);            //modelBuilder.Configurations.Add(s);            //关联到配置方法            AddEntityMapping(modelBuilder);            //....            base.OnModelCreating(modelBuilder);        }        /// <summary>        /// 制定类对类对象进行配置        /// </summary>        /// <param name="modelBuilder"></param>        private void AddEntityMapping(DbModelBuilder modelBuilder)        {            modelBuilder.Configurations.Add(new ProductMapping());        }    }


对类对象进行构造 指定表名 主键名称 长度 等等规则 这里不一一列举 需要的同学自己去查 

    public class ProductMapping : EntityTypeConfiguration<product>    {        public ProductMapping()        {            this.ToTable("product");            this.HasKey(x => x.id);            this.Property(x => x.name).HasMaxLength(50);            //this.HasRequired(x => x.Member).WithMany().HasForeignKey(x => x.MemberId);        }    }


那么到了上面这一步 我们的数据库 已经和ConnectionData 类 相互关联起来了 那么我们现在要做的 只是使用它而已

        public List<product> GetproductInfo()        {            ConnectionData c = new ConnectionData();            var datas= c.ProductInfo.Where(q => q.id == 1).ToList();            return datas;        }
到了这里 我们已经取出你的实体对象对应的数据库对象了。




1 0
原创粉丝点击