hdo*_*itc 2 mongodb .net-core asp.net-core
我找不到 MongoDb 的注释,.Net Core 模型中可以修改集合名称。在 SQL 数据库中,它将是 [Table("all_sessions")]。
我的型号名称和系列名称不同。我没有更改型号或系列名称。
public class Session
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[BsonElement("_id")]
public string Id { get; set; }
[BsonElement("expires")]
public string Expires { get; set; }
[BsonElement("session")]
public string Session { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的集合名称是 all_sessions。我希望使用 all_sessions 集合获得工作会话模型。
小智 5
所以前段时间我遇到了类似的问题,并且我创建了自己的该模式的实现。
所以第一部分是创建自定义属性:
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class BsonCollectionAttribute : Attribute
{
private string _collectionName;
public BsonCollectionAttribute(string collectionName)
{
_collectionName = collectionName;
}
public string CollectionName => _collectionName;
}
Run Code Online (Sandbox Code Playgroud)
第二部分是通过反射获取该属性的值
private static string GetCollectionName()
{
return (typeof(T).GetCustomAttributes(typeof(BsonCollectionAttribute), true).FirstOrDefault()
as BsonCollectionAttribute).CollectionName;
}
Run Code Online (Sandbox Code Playgroud)
我在存储库类中执行此操作,因此 mthat 类中的示例方法如下所示:
public async Task InsertOne(T model)
{
var collectionName = GetCollectionName();
var collection = Database.GetCollection<T>(collectionName);
await collection.InsertOneAsync(model);
}
Run Code Online (Sandbox Code Playgroud)
最后我的模型看起来像:
[BsonCollection("Users")]
public class User
{
[BsonId]
[BsonElement("id")]
[BsonRepresentation(BsonType.String)]
public Guid Id { get; set; }
[BsonElement("name")]
public string Name { get; set; }
[BsonElement("email")]
public string Email { get; set; }
[BsonElement("password")]
public string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)
希望我有所帮助;)
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |