EF学习笔记


CODE First方法:

 

EF是一个基于ADO.NET之上的一个类,我们只是使用者,如同Microsoft.Practices.EnterpriseLibrary.Data,会使用就可以了。

EF是重要的三项:

1.DBContext,一般指加密了的Connection,如 

        protected DBBase( string key )
            : base( GetDecryptConnectionString( key ) )
        {           
        }


 

2.DbSet<>,将数据实体包装成以一个可以查询的集合。

 

3.保存SaveChanges(),根据状态EntityState.Added进行持久化。

 

==================

 1.实体BaseUserInfo,并采用Atribute将其与DB之前的关系进行映射。

[Table("Base_User")]
    public class BaseUserInfo
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Required(ErrorMessage = "UserID required.")]
        [Column("UserID", TypeName = "int")]
        public int UserID { get; set; }

        [Column("UserName", TypeName = "nvarchar")]
        public string UserName { get; set; }

        [Column("UserPwd", TypeName = "nvarchar")]
        [StringLength(100, ErrorMessage = "UserPwd must be", MinimumLength = 1)]
        public string UserPwd { get; set; }

        [Column("CreateTime", TypeName = "datetime")]
        public DateTime? CreateTime { get; set; }
    } 

 

2.DB上下文

 

    public class GovContext : DbContext
    {
        
        private const string GOV_CONNETION_STRING = "govEntities2";
        public GovContext()
            : base(GOV_CONNETION_STRING)
        {
        }
        public GovContext(string connetionString)
            : base(connetionString)
        {        
        }
        public DbSet<BaseUserInfo> BaseUsers { get; set; }
        //public DbSet<BaseUserInfo> BaseUsers { get; set; }
        //public DbSet<BaseUserInfo> BaseUsers { get; set; }
    }

 

3.sp的编写方式

        private GovContext context;
        public BaseUserDAL(GovContext context)
        {
            this.context = context;
        }
        public void UploadBaseUserInfo(BaseUserInfo info)
        {
            string sqlString = @"exec [sp1_Base_User_u] @UserID,@UserName,@UserPwd";
            this.context.Database.ExecuteSqlCommand(sqlString,
                new SqlParameter("UserID", info.UserID),
                new SqlParameter("UserName", info.UserName),
                new SqlParameter("UserPwd", info.UserPwd));
        }
        public void InsertBaseUserInfo(BaseUserInfo info)
        {
            string sqlString = @"exec [sp1_Base_User_i] @UserID,@UserName,@UserPwd, @CreateTime";
            this.context.Database.ExecuteSqlCommand(sqlString,
                new SqlParameter("UserID", info.UserID),
                new SqlParameter("UserName", info.UserName),
                new SqlParameter("UserPwd", info.UserPwd),
                new SqlParameter("CreateTime", DateTime.Now));
        }

 

4.调用方式

        private GovContext govContext = new EFCodeFirst.GovContext();

        protected void Page_Load(object sender, EventArgs e)
        {
            /*增加*/
            BaseUserInfo info = new BaseUserInfo();
            info.UserID = 6;
            info.UserName = "bbb";
            info.UserPwd = "bbb";
            //info.CreateTime = DateTime.Now;
            BaseUserDAL baseUserDAL = new BaseUserDAL(govContext);
            baseUserDAL.InsertBaseUserInfo(info);
            govContext.SaveChanges();

            /*增加没有SP
            BaseUserInfo info = new BaseUserInfo();
            info.UserID = 6;
            info.UserName = "ccc";
            info.UserPwd = "ccc";
            info.CreateTime = DateTime.Now;

            govContext.BaseUsers.Add(info);
            //govContext.Entry(info).State = EntityState.Added;
            //govContext.Entry(info).State = EntityState.Modified;//更新
            //govContext.Entry(info).State = EntityState.Deleted;//删除
            govContext.SaveChanges();*/

            Response.Write("操作成功!");
        }


 

6. EFProviderWrapperToolkit.dll记录sql日志,也可以借助sqlProfile进行分析

 

7.EFCachingProvider.dll、EF下层的缓存,对调用层透明。

 

8.LINQPad,方面验证和分析LINQ

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、 3本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReAdmE.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值