码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework的简单使用

时间:2015-08-18 21:05:38      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

公司的项目在用EF,最近抽时间研究了下,整理了一个比较公用的EF框架,供大家一起分享下。

EF这东东,用得好的话,确实方便了开发;用得不好的话,出了问题半天也找不出是什么原因。

现在就先介绍EF的简单使用。主要分为以下5个项目

技术分享

EF.Core:数据实体

EF.Data:C#实体跟数据表直接的映射

EF.Service:数据服务

EFFramework:公共类库

EFSolution:测试项目

DbContext是EF比较重要的类,我们的数据库访问对象都必须继承该类。下面就是我们要用到的数据上下文:

技术分享
public class EFObjectContext : DbContext, IDbContext
    {
        public EFObjectContext(string nameOrConnectionString)
            : base(nameOrConnectionString)
        {
            //((IObjectContextAdapter) this).ObjectContext.ContextOptions.LazyLoadingEnabled = true;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //dynamically load all configuration
            //System.Type configType = typeof(LanguageMap);   //any of your configuration classes here
            //var typesToRegister = Assembly.GetAssembly(configType).GetTypes()

            string[] MapPath = { "EF.Data.dll" };

            foreach (var path in MapPath)
            {
                var asm = Assembly.LoadFrom(path);
                var typesToRegister = asm.GetTypes()
                .Where(type => !String.IsNullOrEmpty(type.Namespace))
                .Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));

                foreach (var type in typesToRegister)
                {
                    dynamic configurationInstance = Activator.CreateInstance(type);
                    modelBuilder.Configurations.Add(configurationInstance);
                }
            }

            //...or do it manually below. For example,
            //modelBuilder.Configurations.Add(new LanguageMap());

            base.OnModelCreating(modelBuilder);
        }
}
View Code

OnModelCreating方法是应用程序在初始化时将实体跟数据表的映射加载到数据上下文。

1、定义实体

技术分享
    public class BlogUser:BaseEntity
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }
    }
View Code

此处比较简单,不再废话。

2、定义映射

技术分享
public partial class BlogUserMap : EntityTypeConfiguration<BlogUser>
    {
        public BlogUserMap()
        {
            this.ToTable("BlogUser");
            this.HasKey(c => c.Id);
        }
    }
View Code

定义实体跟数据表的映射,实体之间一对一、一对多、多对多的关系也在此处定义。

3、定义数据服务

技术分享
public interface IBlogUserService
    {
        IList<BlogUser> GetAllBlogUser();
    }
View Code
技术分享
public class BlogUserService : IBlogUserService
    {
        private readonly IRepository<BlogUser> _blogUserRepository;
        public BlogUserService(IRepository<BlogUser> blogUserRepository)
        {
            this._blogUserRepository = blogUserRepository;
        }
        public IList<BlogUser> GetAllBlogUser()
        {
            return _blogUserRepository.Table.ToList();
        }
    }
View Code

测试程序如下:

技术分享
static void Main(string[] args)
        {
            EngineContext.Initialize(false);
            Console.WriteLine("初始化完成");

            IBlogUserService service = EngineContext.Current.Resolve<IBlogUserService>();

            IList<BlogUser> users = service.GetAllBlogUser();

            Console.ReadKey();
        }
View Code

这就是EF的简单使用。

Entity Framework的简单使用

标签:

原文地址:http://www.cnblogs.com/dengwenbo/p/4740522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!