inq*_*one 5 c# linq import mongodb linq-to-sql
我有一个非常简单的LinqToSql列表.
var list = DB.Where(c => c.Status.Equals("active")).Select(c => c.Name);
Run Code Online (Sandbox Code Playgroud)
我正在尝试将该列表导入MongoDB.这是我到目前为止所拥有的:
const string connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase("test");
var collection = database.GetCollection("salesppl");
collection.Insert(list);
Run Code Online (Sandbox Code Playgroud)
我也尝试过InsertBatch和Save,但没有运气.以下是我为每个错误消息:InsertBatch
BsonSerializationException:Serializer StringSerializer期望序列化选项类型为RepresentationSerializationOptions,而不是DocumentSerializationOptions.
插入
BsonSerializationException:Serializer EnumerableSerializer期望ArraySerializationOptions类型的序列化选项,而不是DocumentSerializationOptions.
保存
InvalidOperationException:Save只能用于具有Id的文档.
注意: 我认为这没有任何意义,但我通过LinqPad这样做.
那么,如何将此列表保存到MongoDb?
我刚刚发现我的 salesppl 字符串列表无法存储为顶级项目。我需要使用类来保存列表或使用 BsonDocument。
这是对我有用的代码:
var list = DB.Where(c => c.Status.Equals("active"))
.Select(c => new BsonDocument("name", c.Name))
.ToList();
Run Code Online (Sandbox Code Playgroud)
然后对于 MongoDB 中的集合,我需要使用:
collection.InsertBatch(list);
Run Code Online (Sandbox Code Playgroud)
我更新后的代码现在看起来像这样:
var list = DB.Where(c => c.Status.Equals("active"))
.Select(c => new BsonDocument("name", c.Name))
.ToList();
const string connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase("test");
var collection = database.GetCollection("salesppl");
collection.InsertBatch(list);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |