在EF中构建业务层小记

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 00:40 点击:

   在使用Entity Framework时,它很好的帮我们处理了数据处理层,在业务层,我们对实体的操作,也有一些通用的东西,比如对实体的增、删、改,这三种操作,大多数实体都相同,下面的代码就是通用的在业务处理层的方法实体,如果有单独的处理,子业务处理类可以继承这个业务父类来实现自己的功能。
         下面是定义业务父类,有三个公共方法:Add ,Remove,Mofify,和一个私有方法,GetEntitySetName,这个方作用是:在添加通用实体类时,将调用数据库实体对象的AddObject方汉,它的第一个参数需要一个实体集合名,这个名称可以通过GetEntitySetName方法得到,这个方法需要一个要添加的实体作为参数传递。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects.DataClasses;
using System.Data.Mapping;
using System.Data.Metadata.Edm;
using System.Data.EntityClient;
using System.Reflection;
using System.Collections;
 class BllEntity
    {
        //数据库对象
        protected TSMS_DBEntities tsms = new TSMS_DBEntities();
        /// <summary>
        /// 从映射文件中获取实体和数据表对应名称
        /// </summary>
        /// <param name="entityname">实体名</param>
        /// <returns>数据表名</returns>
        string GetEntitySetName(EntityObject entity)
        {
            Type entitytype = entity.GetType();//获取实体类型
            string entityname = entitytype.Name;//获取实体名称
 
            //构建连接对象
            EntityConnectionStringBuilder ecsb = new EntityConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings["TSMS_DBEntities"].ConnectionString);
            string[] arrstr = ecsb.Metadata.Split('|');//得到映射文件
            EdmItemCollection e = new EdmItemCollection(arrstr[0]);//得到CSDL
            StoreItemCollection s = new StoreItemCollection(arrstr[1]);//得到SSDL
            StorageMappingItemCollection smt = new StorageMappingItemCollection(e, s, arrstr[2]);//得到MSL
            //获取合部实体对应关系
            var entities = smt[0].GetType().GetProperty("EntitySetMaps", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(smt[0], null);
            foreach (var entityvalue in (IList)entities)
            {
                //反射得到StorageSetMapping类型
                Assembly ass = Assembly.Load("System.Data.Entity,Version=3.5.0.0,culture=Neutral,PublicKeyToken=b77a5c561934e089");
                Type type = ass.GetType("System.Data.Mapping.StorageSetMapping");
            &

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1