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

不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写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之旅今天是正式开始了

最新文章

  1. EXPORT_SYMBOL的使用
  2. 解决Window Azure: Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found.
  3. Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例
  4. 自定义Exception
  5. leetcode 24
  6. Daily Scrum4
  7. POJ 2251 Dungeon Master(广搜,三维,简单)
  8. AS--&gt;如何更高效的使用 Gradle, 快速build apk
  9. Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别
  10. 微信小程序开发之普通链接二维码
  11. Qt学习--信号与槽(多窗口的实现)
  12. ES6常用特性总览
  13. [笔记]JavaScript 秘密花园
  14. ant自动编译打包android项目
  15. 17秋 SDN课程 第一次作业
  16. quartz.net实现集群部署的笔记
  17. jsonp 使用选择器
  18. GDOI2018记录
  19. 关于block的回调使用-防止内存泄露问题
  20. Deploying Cloud Foundry on OpenStack Juno and XenServer (Part I)

热门文章

  1. Asp.net MVC 之过滤器
  2. DBMS_JOBS
  3. Atcoder CODE FESTIVAL 2016 qual C 的E题 Encyclopedia of Permutations
  4. django Q和F查询
  5. go1.6.2 linux/amd64 的一个bug: gcc: 无法识别的选项&lsquo;-no-pie&rsquo;
  6. Linux经典书籍推荐
  7. 我的ZJ解题心得
  8. Flex中设置Camera的视频清晰质量的最佳配合
  9. 13. Reorder List
  10. 重置SQL Server连接池