मैं नेट कोर 3.1 एमवीसी ऐप पर डेटा बीज करने के तरीके खोज रहा हूं। मुझे दस्तावेज़ीकरण से शुरू होने वाले कई नमूने मिले हैं। जो मुझे नहीं मिला वह अच्छा था, वास्तविक जीवन पूर्ण-उदाहरण (जेसन/एक्सएमएल) फ़ाइल का उपयोग कर रहा था। निकटतम जो मुझे मिला है यह नहीं दिखाता कि कैसे ठीक से एक (Json/XML) प्राप्त करें फ़ाइल का स्थान चाहे जिस प्लेटफ़ॉर्म का उपयोग किया गया हो। मैं अन्य स्टैक ओवरफ़्लो प्रश्नों पर पाए गए DI समाधानों को सफलतापूर्वक एकीकृत करने में सक्षम नहीं हूं, जिससे मुझे लगता है कि यह संभव नहीं है। उम्मीद है कि कोई मदद कर सकता है।

धन्यवाद!

1
RoLYroLLs 9 नवम्बर 2020, 05:48

1 उत्तर

सबसे बढ़िया उत्तर

सबसे नज़दीकी जो मैंने पाया वह यह नहीं दिखाता कि कैसे एक (जेसन/एक्सएमएल) फ़ाइल का स्थान ठीक से प्राप्त किया जाए, इससे कोई फर्क नहीं पड़ता कि प्लेटफॉर्म का इस्तेमाल किया गया है।

यदि आपकी json फ़ाइल भौतिक डिस्क में मौजूद है, तो आप केवल मूल भौतिक स्थान का उपयोग करते हैं:

using (StreamReader r = new StreamReader(@"C:\xxx\xxx\test.json"))

यदि आपकी json फ़ाइल प्रोजेक्ट और रूट प्रोजेक्ट में मौजूद है, तो निम्न स्थान का उपयोग करें:

using (StreamReader r = new StreamReader(@"test.json"))

यदि यह प्रोजेक्ट में फ़ोल्डर्स में मौजूद है, तो आप नीचे दिए गए स्थान का उपयोग कर सकते हैं:

using (StreamReader r = new StreamReader(@"wwwroot/test.json"))

और एक और बात जो आपको जानने की जरूरत है, हालांकि आपके पास रिश्तों के साथ कई मॉडल हैं, सुनिश्चित करें कि जेसन में केवल एक मॉडल का डेटा होना चाहिए।

यहाँ एक उदाहरण कोड है:

1. मॉडल:

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int UserId { get; set; }
    public List<User> User { get; set; }
}
public class User
{
    public int Id { get; set; }
    public int Age { get; set; }
}

2. डीबीकॉन्टेक्स्ट:

public class YourDbContext : DbContext
{
    public YourDbContext(DbContextOptions<YourDbContext> options)
        : base(options)
    {
    }

    public DbSet<Test> Test { get; set; }
    public DbSet<User> User { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Test>().HasData(SeedTestData());
    }
    public List<Test> SeedTestData()
    {
        var tests = new List<Test>();
        using (StreamReader r = new StreamReader(@"test.json"))
        {
            string json = r.ReadToEnd();
            tests = JsonConvert.DeserializeObject<List<Test>>(json);
        }
        return tests;
    }
    public List<User> SeedUserData()
    {
        var users = new List<User>();
        using (StreamReader r = new StreamReader(@"test2.json"))
        {
            string json = r.ReadToEnd();
            users = JsonConvert.DeserializeObject<List<User>>(json);
        }
        return users;
    }
}

3. पैकेज मैनेजर कंसोल में निम्नलिखित कमांड चलाएँ:

>PM Add-Migration init
>PM Update-Database

टेस्ट.जेसन:

[
  {
    "id": 1,
    "name": "aa"
  },
  {
    "id": 2,
    "name": "bb"
  },
  {
    "id": 3,
    "name": "cc"
  }
]

Test2.json:

[
  {
    "id": 1,
    "age": 34
  },
  {
    "id": 2,
    "age": 21
  }
]
3
Rena 9 नवम्बर 2020, 10:25