今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊。
不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写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之旅今天是正式开始了