25

एंटिटीफ्रेमवर्क 7 का उपयोग करके आप एएसपी.NET कोर वेब एप्लिकेशन में SQLite डेटाबेस को कैसे जोड़ और उपयोग करते हैं?एंटिटीफ्रेमवर्क के साथ एएसपी.नेट कोर में SQLite

मैंने एएसपी.NET कोर में डाला जब मैंने इसके बारे में सुना और अपना पहला वेब एप्लिकेशन बनाया, तो अचानक मुझे डेटा का एक गुच्छा था जिसे मैं स्टोर करना चाहता था और SQLite स्पष्ट पसंद की तरह लग रहा था।
चूंकि मैं चाहता था कि यह मेरे आवेदन के साथ रहें, इसे हल्के, सरल रखें और एक अलग डेटाबेस स्थापित करने से बचें।

तो एएसपी.NET कोर में SQLite डेटाबेस बनाने के बारे में कोई कैसे जाएगा?

  • ASP.NET कोर - अब पूर्व में ASP.NET MVC 6
  • EntityFramework कोर के रूप में जाना जाता है - अब पूर्व EntityFramework 7

उत्तर

71

अद्यतन के रूप में जाना: नवम्बर 4, 2016
Reformatting - कोड उदाहरणों के लिए चित्र।
जानकारी: ध्यान रखें कि कुछ कोड उदाहरणों में, दृश्य स्टूडियो टेम्पलेट द्वारा उत्पन्न कोड को छोड़ दिया गया है।

अद्यतन: जुलाई 11, 2016
नेट कोर और EntityFrameWork कोर संस्करण 1.0 हम पर है!
तो इस गाइड एक छोटे से अद्यतन हकदार

चरण 1:
आपके आवेदन बनाएँ।
enter image description here

चरण 2:
जाओ आवश्यक संकुल
Microsoft.EntityFrameworkCore 1.0.0
Microsoft.EntityFrameworkCore.SQlite 1.0.0

चरण 3:
अपने संदर्भ बनाएं :
(संदर्भ एक वर्ग होगा जो आप बनाते हैं)

public class DatabaseContext : DbContext 
{ 
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlite("Filename=MyDatabase.db"); 
    } 
} 

चरण 4:
अपनी सेवाओं के लिए अपने संदर्भ जोड़ें:
(अपने स्टार्टअप वर्ग में स्थित है)

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>(); 
} 

चरण 5:
स्टार्टअप पर अपने डेटाबेस बनाएँ, द्वारा इसे स्टार्टअप विधि
(स्टार्टअप क्लास में स्थित) में जोड़ना

public Startup(IHostingEnvironment env) 
{ 
    using(var client = new DatabaseContext()) 
    { 
     client.Database.EnsureCreated(); 
    } 
} 

एट वोइला!
अब आप अपने एएसपी.NET कोर अनुप्रयोगों में SQLite का उपयोग करने में सक्षम होंगे।
पुरानी मार्गदर्शिका अभी भी लागू होती है कि आप अपने मॉडल कैसे बनाते हैं और साथ ही अपने डेटाबेस संदर्भ का उपयोग करते हैं।


अद्यतन: 28 मई 2016
नेट कोर RC2 और EntityFramework कोर RC1 जारी किया गया है।
उन्होंने SQLite सेट अप करने के चरणों को बेहतर और सरल बना दिया है।
लेकिन मुझे इसके साथ कुछ परेशानी का सामना करना पड़ रहा है और Newtonsoft.Json लाइब्रेरी और NuGet के साथ एक त्रुटि के कारण इसे दोहराना नहीं कर सकता।

यदि आप ऐसा करना चाहते हैं, तो मैं आरसी 1 पुस्तकालयों में चिपकने की सलाह देता हूं!


चरण 1:
अपना ASP.NET वेब आवेदन

ASP.NET5WebApp

चरण 2:
उपकरण पर जाएं -> Nuget पैकेट प्रबंधक -> Nuget प्रबंधित समाधान के लिए पैकेज।
EntityFramework.SQLite के लिए खोजें और Include prelease बॉक्स को चेक करें। एक संदर्भ
अपने डेटाबेस के लिए एक संदर्भ कक्षा बनाएं बनाना:
पैकेज

NugetEF7Sqlite

चरण 3 स्थापित करें।
इसे जो कुछ भी आप चाहते हैं उसे कॉल करें, लेकिन चलिए कुछ ऐसी चीज के साथ जाएं जो MyDbContext है। Startup.cs करने के लिए

जाओ और सुनिश्चित करें कि अपने डेटाबेस के शुरू में बनाई गई है: अपने नए वर्ग DbContext वर्ग के वारिस हैं और OnConfiguring विधि ओवरराइड और इतने की तरह अपने कनेक्शन को परिभाषित:

public class MyDbContext : DbContext 
{ 
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = "MyDb.db" }; 
     var connectionString = connectionStringBuilder.ToString(); 
     var connection = new SqliteConnection(connectionString); 

     optionsBuilder.UseSqlite(connection); 
    } 
} 

चरण 4 अपने वेब अनुप्रयोग:

public void ConfigureServices(IServiceCollection services) 
    { 
     // Add framework services. 
     services.AddMvc(); 

     services.AddEntityFramework() 
     .AddSqlite() 
     .AddDbContext<MyDbContext>(); 
    } 
:

public Startup(IHostingEnvironment env) 
    { 
     // Set up configuration sources. 
     var builder = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json") 
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);   


     using (var db = new MyDbContext()) 
     { 
      db.Database.EnsureCreated(); 
      db.Database.Migrate(); 
     } 

    } 

दूसरी बात हम सेवा को जोड़ना होगा

चरण 5: निर्धारित करने से आपके मॉडल
अपने मॉडल बनाएं और MyDbContext.cs पर जाकर अपने नए मॉडल से प्रत्येक के लिए नई प्रॉपर्टी जोड़ने (यह देखते हुए कि आप प्रत्येक के लिए एक मेज चाहते हैं!
मेरे मॉडल::

public class Category 
{ 
    public int Id { get; set; } 

    public string Title { get; set; } 

    public string Description { get; set; } 

    public string UrlSlug { get; set; } 
} 

मेरी संदर्भ के लिए यह जोड़ना:

public class MyDbContext : DbContext 
{ 
    public DbSet<Category> Categories { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = "MyDb.db" }; 
     var connectionString = connectionStringBuilder.ToString(); 
     var connection = new SqliteConnection(connectionString); 

     optionsBuilder.UseSqlite(connection); 
    } 
} 

चरण 6:)
यहाँ एक उदाहरण है का उपयोग करते हुए संदर्भ

अपने HomeController पर जाएं और एक जोड़ने आपके नियंत्रक के लिए नया क्षेत्र।
private readonly MyDbContext _myDbContext = new MyDbContext();
और यह वापस आ देखने के लिए पारित करके एक ActionResult में इसका इस्तेमाल करते हैं: (अब मान, हमारे डेटाबेस में, एक श्रेणी की सुविधा देता है)

public IActionResult Index() 
{ 
    var category = _myDbContext.Categories.First(); 
    return View(category); 
} 

तो अपने सूचकांक दृश्य पर जाकर करके, आप डेटाबेस से हमारे काल्पनिक डेटा का उपयोग कर सकते हैं। इसलिए की तरह अपने दृश्य के शीर्ष में एक मॉडल को परिभाषित करने से:

@model MyNameSpace.Models.Category 
@{ 
    ViewData["Title"] = "Hey Ho! SO!"; 
} 


<div class="page-header"> 
    <h1>@ViewData["Title"]</h1> 
</div> 

<div class="container"> 
    @Model.Title 
</div> 

अब से हमारी वेब आवेदन शुरू करने और सौंपा पते के लिए जा रहा है कि हम एक फैंसी बूटस्ट्रैप हेडर के साथ एक डिफ़ॉल्ट html पृष्ठ देखना चाहिए, पृष्ठ पर इस दिखा :
webpage

दूसरी पंक्ति हमारे डेटाबेस में हमारी पहली श्रेणी का शीर्षक है (या होगा)।

Entity Framework 7 Docs

यह मेरा पहला क्यू & एक है - आप किसी भी इनपुट या कुछ है कि स्पष्ट टिप्पणी करने में संकोच नहीं करते की जरूरत है।
यह एएसपी.NET कोर एमवीसी वेब अनुप्रयोग में SQLite डेटाबेस को कार्यान्वित करने का एक बहुत ही बुनियादी उदाहरण है।
ध्यान दें करें डेटाबेस, कैसे संदर्भ और उस EntityFramework 7 उपयोग करने के लिए के लिए कनेक्शन स्ट्रिंग सेट करने के लिए कई तरीके है कि वहाँ अब भी है एक प्री-रिलीज़

6

आप एक ASP.NET कोर वेब SQLite का उपयोग कर आवेदन बनाना चाहते हैं डेटाबेस के लिए, मैं आपके लिए ऐप मचान करने के लिए Yeoman का उपयोग करने की अत्यधिक अनुशंसा करता हूं। आपको पहले .NET Core 1.1 SDK इंस्टॉल करना होगा (विजुअल स्टूडियो 2015 में इस समय केवल एसडीके संस्करण 1.0.0 और 1.0.1 शामिल हैं)। इसके बाद आपको Node.js इंस्टॉल करना होगा जो एनपीएम के साथ आता है और फिर निम्नलिखित एनपीएम पैकेज स्थापित करें: yo और generator-aspnet। तो आपको बस yo aspnet चलाएं और कुछ प्रश्नों का उत्तर दें।

Your project is now created, you can use the following commands to get going 
    cd "WebApplication" 
    dotnet restore 
    dotnet build (optional, build will also happen when it's run) 
    dotnet ef database update (to create the SQLite database for the project) 
    dotnet run 

भागो dotnet restore, dotnet ef database updatedotnet run, और फिर और यह सुनिश्चित करें परियोजना चल रहा है बनाने के लिए localhost:5000 पर जाएँ:

C:\Development>yo aspnet 
? ========================================================================== 
We're constantly looking for ways to make yo better! 
May we anonymously report usage statistics to improve the tool over time? 
More info: https://github.com/yeoman/insight & http://yeoman.io 
========================================================================== Yes 

    _-----_  ╭──────────────────────────╮ 
    |  | │  Welcome to the  │ 
    |--(o)--| │ marvellous ASP.NET Core │ 
    `---------´ │  generator!  │ 
    (_´U`_) ╰──────────────────────────╯ 
    /___A___\ /
    | ~ | 
    __'.___.'__ 
´ ` |° ´ Y ` 

? What type of application do you want to create? Web Application 
? Which UI framework would you like to use? Bootstrap (3.3.6) 
? What's the name of your ASP.NET application? WebApplication 

बाद में, आप निम्नलिखित प्रतिसाद मिलेगा।

अब आप विजुअल स्टूडियो 2015 (यह मानते हुए कि आप विंडोज़ पर हैं) या विजुअल स्टूडियो कोड में प्रोजेक्ट खोल सकते हैं।

ASP.NET Core web application generated using Yeoman

इस बारे में महान बात यह है कि Startup.cs, project.json, और appsettings.json फ़ाइलों SQLite उपयोग करने के लिए सेटअप कर रहे हैं। इसके अलावा, एक SQLite डेटाबेस से आपके लिए बनाया गया है:

Startup.cs:

public void ConfigureServices(IServiceCollection services) 
{ 
    // Add framework services. 
    services.AddDbContext<ApplicationDbContext>(options => 
     options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); 
} 

project.json:

{ 
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0", 
    "Microsoft.EntityFrameworkCore.Sqlite.Design": { 
     "version": "1.1.0", 
     "type": "build" 
    } 
} 

appsettings.json

{ 
    "ConnectionStrings": { 
    "DefaultConnection": "Data Source=WebApplication.db" 
    } 
} 

आपका SQLite डेटाबेस bin/Debug/netcoreapp1.0 में स्थित होगा। मेरे मामले में, यह C:\Development\WebApplication\bin\Debug\netcoreapp1.0\WebApplication.db

यदि आप SQLite डेटाबेस का नाम बदलना चाहते हैं, तो appsettings.json फ़ाइल को संशोधित करें और dotnet ef database update चलाएं।

, नेट कोर और एफई कोर के साथ SQLite डेटाबेस का उपयोग कर के बारे में अधिक जानने के लिए इस लेख की जाँच करने के लिए: .NET Core - New Database

+0

निर्दिष्ट ढांचे 'Microsoft.NETCore.App', संस्करण '1.1.0' नहीं मिला था। तो अब इसे 1.1.0 की आवश्यकता है - यो एस्पनेट जनरेटर v 1.0.1 के साथ पिछड़ा संगतता तोड़ता है .. – hB0

+1

यदि आप योनोमन के साथ विजुअल स्टूडियो का उपयोग करने जा रहे हैं, तो आपके पास 2 विकल्प हैं: 1) [.NET कोर 1.1 एसडीके डाउनलोड करें ] (https://www.microsoft.com/net/core#windowscmd) और [बीटा को NuGet अपडेट करें] (http://docs.nuget.org/ndocs/guides/install-nuget#nuget-beta-channel) । 2) मैन्युअल रूप से 'package.json' संपादित करें और" 1.1.0-preview4-final "को" 1.0.0-preview2-003131 "में बदलें (और" 1.1.0 "को" 1.0.1 "में भी बदलें। यदि आप कोई बनाते हैं 'global.json' फ़ाइल, सुनिश्चित करें कि sdk.version अभी भी आपके चयन के बावजूद" 1.0.0-preview2-003131 "है। एमएस '.csproj' के पक्ष में' package.json' से छुटकारा पा रहा है, इसलिए इसे पहचानना आवश्यक है 'package.json' – kimbaudi

संबंधित मुद्दे