2017-02-06 1 views
0
temp= { 
     "Vikas": 1, 
     "Pravin": 2, 
     "Akshay": 5, 
     "Vijay": 3, 
     "Prasad": 4 
     } 

Этого значение я получаю в переменном темпе Я хочу, чтобы хранить эти данные в базе данных с одной дополнительной колонкой, как следующиймагазина JSON данные в базе данных с помощью C#

name  rank createdby 
vikas  1  nitin 
pravin  2  nitin 
akshay  5  nitin 
vijay  3  nitin 
Prasad  4  nitin 


Note: name column is employee name so it is anything 

Я пытался, как получить в C#

[System.Web.Services.WebMethod] 
public static string setAnswer(string jsondata) 
{ 
    List<string[]> data = JsonConvert.DeserializeObject<List<string[]>>(jsondata); 
} 

Вопрос.

1) как получить эту json data в C# и add additional column

2) Можно ли передать всю информацию с использованием множественной вставки строк в одном запросе вместо того, чтобы использовать петлю и вставить одну строку.

+4

Какой тип доступа к БД вы используете? EF? ADO? NHibernate? – BWA

+0

Я использую sql server 2008 – Pravin

+1

зависит от базы данных, которую вы используете. Если db позволяет bulkinsert, это возможно. чтобы добавить строку в массив, вы должны скопировать весь массив. –

ответ

2

правильный способ десериализации этого содержимого:

{ 
    "Vikas": 1, 
    "Pravin": 2, 
    "Akshay": 5, 
    "Vijay": 3, 
    "Prasad": 4 
} 

Следует десериализовать его в Dictionary<string, int>.

Вот LINQPad пример:

void Main() 
{ 
    const string json = @"{ 
     ""Vikas"": 1, 
     ""Pravin"": 2, 
     ""Akshay"": 5, 
     ""Vijay"": 3, 
     ""Prasad"": 4 
    }"; 
    Dictionary<string, int> empsAndNumbers = 
     JsonConvert.DeserializeObject<Dictionary<string, int>>(json); 
    empsAndNumbers.Dump(); 
} 

, который выводит:

example output

2

Отредактировано после explantions:

Вы можете десериализации его в словарь таким образом:

var data = JsonConvert.DeserializeObject<Dictionary<string, int>>(temp); 

Я этот момент мы имеем словарь с данными. Как сохранить его в БД, зависит от того, как вы получаете доступ к db.

+0

благодарит за ответ, но нет..но. .. это имя сотрудника, поэтому я не могу сделать его статическим, это может быть что угодно, так что это невозможно сделать классом – Pravin

+0

Словарь строки для int более уместен, 'Словарь '. –

+0

@ Pravin вы на это говорите, это очень важно для решения. Измените вопрос и добавьте эту информацию. – BWA

1

Создание Entity: MemberRank

public class MemberRank 
{ 
    public int Id { get; set; } 
    public string MemberName { get; set; } 
    public int Rank{ get; set; } 
    public string CreatedBy { get; set; } 
} 

Затем в контроллер,

var membersText = File.ReadAllText(Path.Combine(envContentRootPath, @"PathOfTheFile")); 
var members = JsonConvert.DeserializeObject<List<MemberRank>>(membersText); 
members.ForEach(cb => cb.CreatedBy = "nitin"); 
_dbContext.Set<MemberRank>().AddRange(members); 
_dbContext.SaveChanges(); 

Для этого, чтобы работать, вы должны изменить файл JSON следующим образом:

[ 
    { 
    "memberName" : "Vikas", 
    "rank" : 1 
    }, 
    { 
    "memberName" : "Pravin", 
    "rank" : 2 
    }, 
    { 
    "memberName" : "Akshay", 
    "rank" : 5 
    }, 
    { 
    "memberName" : "Vijay", 
    "rank" : 3 
    }, 
    { 
    "memberName" : "Prasad", 
    "rank" : 4 
    } 
] 
+0

Как вы получаете Json.net для десериализации примера json в ваш тип 'MemberRank'? –

+0

Где у вас есть вопросы о EF? – BWA

+0

Я предполагаю, что он использует EF, сэр. – Dronacharya

Смежные вопросы