![](/img/trans.png)
[英]ASP.NET C# How to retrieve data from SQL Server and convert multi-row data into one row seperated by comma?
[英]How to convert string array property to string to save in the sql server as comma seperated row mongo db to sql server C#
我在mongo db“計算機”中有一個集合,我想使用實體框架檢索集合並將其保存到sql服務器中。 問題是集合有一個數組對象,我想將其轉換為字符串並保存。 請幫助,謝謝。 SQL Server跳過字符串[]憑據,並插入其余部分。
Mongo數據庫集合
{
"_id": ObjectId('57852fcsdsdsdsd2662a0ce400'),
"machineName": "AAADESKTOP",
"updated": ISODate('2017-05-17T15:09:39.399Z'),
"__v": 111,
"credentials": [
"####################",
"####################",
"#################",
"#####################"
],
"clientVersion": "2.12.2",
"lastActivity": ISODate('2017-05-17T16:30:50.165Z'),
"secret": "####################"
}
**C# code**
var client = new MongoClient();
var db = client.GetDatabase("Computerdata");
var collection = db.GetCollection<Computers>("computers");
var data = collection.Find(new BsonDocument()).ToListAsync().Result;
foreach (var item in data)
{
EntityFramewrokContext.Computers.Add(item);
EntityFramewrokContext.SaveChanges();
}
public class Computers
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
[Key]
public string Id { get; set; }
public string machineName { get; set; }
[BsonDateTimeOptions(Representation = BsonType.DateTime)]
public DateTime updated { get; set; }
public int version { get; set; }
public string[] credentials { get; set; }
public string clientVersion { get; set; }
[BsonDateTimeOptions(Representation = BsonType.DateTime)]
public DateTime lastActivity { get; set; }
public string secretKey { get; set; }
}
如果您在SQL Server中有一個名為Computer
的表(要將這些記錄寫入其中),則還應該創建一個名為ComputerCredential
的表,該表具有以下各列:
CredentialId int
ComputerId int
Credential nvarchar(200)
然后,應為陣列中的每個憑據創建一個ComputerCredential
實體。
如果您拼命想按照自己的方式去做。 然后:
var creds = String.Join(",", computer.credentials);
這將使用憑據數組,並將它們變成單個逗號分隔的字符串。
檢索值時,您可以執行以下操作:
var creds = commaSepCredentials.Split(',');
檢索數組。 但是不要這樣做,請選擇第一個選項,並了解SQL Server中的關系和聯接。 這是關系數據庫中的強大功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.