c#开发Mongo笔记第四篇
2024-08-24 14:14:44
今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊。
不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写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之旅今天是正式开始了
最新文章
- EXPORT_SYMBOL的使用
- 解决Window Azure: Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found.
- Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例
- 自定义Exception
- leetcode 24
- Daily Scrum4
- POJ 2251 Dungeon Master(广搜,三维,简单)
- AS-->;如何更高效的使用 Gradle, 快速build apk
- Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别
- 微信小程序开发之普通链接二维码
- Qt学习--信号与槽(多窗口的实现)
- ES6常用特性总览
- [笔记]JavaScript 秘密花园
- ant自动编译打包android项目
- 17秋 SDN课程 第一次作业
- quartz.net实现集群部署的笔记
- jsonp 使用选择器
- GDOI2018记录
- 关于block的回调使用-防止内存泄露问题
- Deploying Cloud Foundry on OpenStack Juno and XenServer (Part I)
热门文章
- Asp.net MVC 之过滤器
- DBMS_JOBS
- Atcoder CODE FESTIVAL 2016 qual C 的E题 Encyclopedia of Permutations
- django Q和F查询
- go1.6.2 linux/amd64 的一个bug: gcc: 无法识别的选项&lsquo;-no-pie&rsquo;
- Linux经典书籍推荐
- 我的ZJ解题心得
- Flex中设置Camera的视频清晰质量的最佳配合
- 13. Reorder List
- 重置SQL Server连接池