关闭

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

标签: c#ef数据库连接对象数据库
1105人阅读 评论(0) 收藏 举报
分类:


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

//实体对象类  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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8173次
    • 积分:208
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论