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


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

//实体对象类  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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值