c#开发Mongo笔记第四篇

今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊。

不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写demo,而是进入项目的正式开发当中,毕竟项目时间有限(想必各位码农也都深有体会吧),边开发边探索吧。

既然是刚刚开始,就先搭了一下系统框架,然后,做了一个登陆功能,和一个登陆日志功能

public  class Log
    {
        public ObjectId Id { get; set; }

        public string Abstract { get; set; }

        public string Description { get; set; }

        public DateTime CreateTime { get; set; }

        public string IPAddress { get; set; }

        public string OS { get; set; }

        public string BrowserVersion { get; set; }

        public string UserHostName { get; set; }

        public string RequestUrl { get; set; }

        public User User { get; set; }
    }

经过考虑,我觉得把用户对象当初冗余存在日志表中,当然了用户表还是存在的,只不过是查询日志的时候避免联查带来的不便,存储的结构式这样的。

public  class User
    {
        public ObjectId _id { get; set; }
        public string UserName { get; set; }

        public string Password { get; set; }

        public Guid CustomID { get; set; }
    }

其实这个id写成_id而没有遵循驼峰命名法也是很不规范的,之所以这么写,是因为查询的时候要转换成对象的话必须完全匹配,不然的话会报错,所以不得不写了这么一个奇怪的属性。

要是大家有什么号的建议还希望能够多多指教。

然后就是用户的登陆功能了,用户我打算写一个数据访问层,目前先写了两个方法

public class DALUser
    {
        public static User GetById(ObjectId id)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
            var list = collection.FindAllAs<User>();
            return list.FirstOrDefault(u => u._id== id);
        }
        public static User GetByName(string name)
        {
            MongoDatabase db = MongoHelper.GetConnection();
            MongoCollection collection = db.GetCollection<User>("User");
            var list = collection.FindAllAs<User>();
            return list.FirstOrDefault(u => u.UserName == name);
        }
    }

登陆的时候就直接先根据名称查出这个用户对象再比较密码,其实和以前访问sqlserver一样了

日志的存储我用了一个通用的方法

public static void Add(object o)
        {
            MongoDatabase db = GetConnection();
            Type type = o.GetType();
            MongoCollection collection = db.GetCollection<Type>(type.Name);
            collection.Insert(o);
        }

所以的对象存储都调用这个函数,其实删,改,查本来也想写通用的函数的,但是没想到好的写法呢,就先分开写,以后再探索吧。

总之,c#操作mongo之旅今天是正式开始了

原文地址:https://www.cnblogs.com/wuxl360/p/6022352.html