Entity Framework Core ट्यूटोरियल
एंटिटी फ्रेमवर्क कोर के साथ शुरुआत करना
खोज…
टिप्पणियों
एंटिटी फ्रेमवर्क (ईएफ) कोर लोकप्रिय एंटिटी फ्रेमवर्क डेटा एक्सेस तकनीक का एक हल्का और एक्स्टेंसिबल संस्करण है।
EF Core एक ऑब्जेक्ट-रिलेशनल मैपर (O / RM) है जो .NET डेवलपर्स को .NET ऑब्जेक्ट्स का उपयोग करके डेटाबेस के साथ काम करने में सक्षम बनाता है। यह अधिकांश डेटा-एक्सेस कोड की आवश्यकता को समाप्त करता है जो डेवलपर्स को आमतौर पर लिखने की आवश्यकता होती है।
प्रोजेक्ट में पैकेज जोड़ना
EntityFrameworkCore को अपनी परियोजना में जोड़ने के लिए, project.json फ़ाइल को अपडेट करें ( dependencies और tools अनुभागों में नई लाइनें जोड़ें):
"dependencies": {
...
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Design": {
"version": "1.0.0",
"type": "build"
},
},
"tools": {
...
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}
इंटरनेट से इन पैकेजों को वास्तव में डाउनलोड dotnet restore लिए dotnet restore को चलाना न भूलें।
यदि आप Microsoft SQLServer के अलावा RDBMS का उपयोग कर रहे हैं - Microsoft.EntityFrameworkCore.SqlServer को सही संस्करण ( Microsoft.EntityFrameworkCore.Sqlite , Npgsql.EntityFrameworkCore.PostgreSQL या अन्य के साथ अनुशंसित पैकेज के लिए अपने RDBMS दस्तावेज़ से परामर्श करें।
कक्षा लाइब्रेरी और एसक्यूएल सर्वर के साथ एंटिटी फ्रेमवर्क कोर में डेटाबेस फर्स्ट
ठीक है, मुझे यह पता लगाने में एक दिन का समय लगा, इसलिए मैं अपने डेटाबेस को प्रथम Class Project (.NET Core) में काम करने के लिए एक .NET कोर वेब ऐप के साथ पोस्ट कर रहा हूं।
चरण 1 - स्थापित .NET कोर
सुनिश्चित करें कि आप .NET कोर नहीं DNX का उपयोग कर रहे हैं (Hint: You should be able to see the .NET Core option when creating a New Project) - यदि यहां से डाउनलोड नहीं किया गया है
यदि आपको .NET कोर स्थापित करने में समस्याएँ हैं (त्रुटि कुछ ऐसी है जैसे Visual Studio 2015 Update 3 सही से स्थापित नहीं है) - आप कमांड का उपयोग करके DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1 चला सकते हैं: [ DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1 ] - जो Visual Studio Check Github जारी करने वाले संस्थापन को रोक देगा
चरण 2 - प्रोजेक्ट बनाएं
एक नया ASP.NET कोर वेब एप्लिकेशन बनाएं -> फिर अगली स्क्रीन में वेब एप्लिकेशन का चयन करें
एक Class Library (.NET Core) प्रोजेक्ट जोड़ें
चरण 3 - ईएफ पैकेज स्थापित करना
अपने project.json खोलें। लाइब्रेरी की फ़ाइल को खोलें, और निम्नलिखित को चिपकाएँ, फिर फ़ाइल सहेजें:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"NETStandard.Library": "1.6.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
}
इस References तहत संकुल को पुनर्स्थापित करना चाहिए
---------------- या
आप पैकेज प्रबंधक कंसोल में निम्न आदेशों को चलाकर उन्हें Nuget Package Manager का उपयोग करके स्थापित कर सकते हैं
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
नोट: एक बार में एक पैकेज स्थापित करें - यदि आपको इंस्टॉल करने के बाद कोई त्रुटि मिलती है
Microsoft.EntityFrameworkCore.Tools
फिर अपने project.json की सामग्री बदलें। project.json चौखटे अनुभाग को इसमें शामिल करें:
"frameworks": {
"net46": {
},
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
}
}
}
चरण 4 - डेटाबेस मॉडल बनाना
अब डेटाबेस को उत्पन्न करने के लिए Package Manager Console में निम्नलिखित कमांड चलाएं (अपने डेटाबेस से कनेक्शन स्ट्रिंग को बदलना न भूलें)
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer
यह आपको स्टार्टअप प्रोजेक्ट के बारे में त्रुटि देगा:
इसके लिए आपको उसी संदर्भ को जोड़ना होगा जो आपने क्लास लाइब्रेरी में .NET वेब ऐप में जोड़ा है
तो वेब project.json लिए अपना project.json खोलें।
dependencies तहत, जोड़ें:
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
और tools जोड़ने के तहत:
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
बदलाव करने के बाद फाइल को सेव करें।
यह मेरा प्रोजेक्ट है। जेसन कैसा दिखता है
फिर क्लास लाइब्रेरी के खिलाफ पैकेज मैनेजर कंसोल में कमांड चलाएँ:
यदि आपने अपनी कक्षा की लाइब्रेरी का संदर्भ वेब ऐप में पहले से नहीं जोड़ा है, तो आपको यह त्रुटि मिलेगी:
अपने वेब ऐप में अपनी कक्षा लाइब्रेरी के इस संदर्भ को हल करने के लिए:
आखिरकार
Package Manager Console में फिर से कमांड चलाएँ:
Scaffold-DbContext "Server=. ; Database=DATABASE; user id= USER ; password = PASSWORD;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
यह क्लास लाइब्रेरी में मॉडल फ़ोल्डर के तहत एंटिटीज़ का निर्माण करना चाहिए
एक कनेक्शन स्ट्रिंग पासिंग
मेरे मामले में, हमारे पास एक मल्टी टेनेंट एप्लिकेशन है, जिसमें प्रत्येक क्लाइंट का अपना डेटाबेस है, जैसे Client_1, Client_2, Client_3। तो कनेक्शन स्ट्रिंग को गतिशील होना था।
इसलिए हमने एक कंस्ट्रक्टर के लिए एक कनेक्शन स्ट्रिंग प्रॉपर्टी को जोड़ा, और इसे OnConfiguring पद्धति के संदर्भ में पास कर OnConfiguring
public partial class ClientContext
{
private readonly string _connectionString;
public ClientContext(string connectionString) : base()
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_connectionString);
}
}
और इसे इस तरह इस्तेमाल किया:
public void TestConnection()
{
var clientId = 1;
var connectionString = string.Format("Server=192.168.0.211; Database=Client_{0}; user id= USER; password = PWD;", clientId);
using (var clientContext = new ClientContext(connectionString))
{
var assets = clientContext.Users.Where(s => s.UserId == 1);
}
}
मॉडल, क्वेरी और सेविंग डेटा
नमूना
ईएफ कोर के साथ, डेटा एक्सेस एक मॉडल का उपयोग करके किया जाता है। एक मॉडल इकाई वर्गों और एक व्युत्पन्न संदर्भ से बना है जो डेटाबेस के साथ एक सत्र का प्रतिनिधित्व करता है, जिससे आप डेटा को क्वेरी और सहेज सकते हैं।
आप किसी मौजूदा डेटाबेस से एक मॉडल उत्पन्न कर सकते हैं, अपने डेटाबेस से मिलान करने के लिए एक मॉडल को कोड कर सकते हैं, या अपने मॉडल से एक डेटाबेस बनाने के लिए ईएफ माइग्रेशन का उपयोग कर सकते हैं (और इसे अपने मॉडल को समय के साथ बदल सकते हैं)।
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace Intro
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
क्वेरी
भाषा एकीकृत क्वेरी (LINQ) का उपयोग करते हुए डेटाबेस से आपकी इकाई कक्षाओं के उदाहरण प्राप्त होते हैं।
using (var db = new BloggingContext())
{
var blogs = db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToList();
}
डेटा की बचत
डेटा को आपके निकाय वर्गों के उदाहरणों का उपयोग करके डेटाबेस में बनाया, हटाया और संशोधित किया जाता है।
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
db.SaveChanges();
}
डेटा हटाना
भाषा एकीकृत क्वेरी (LINQ) का उपयोग करते हुए डेटाबेस से आपकी इकाई कक्षाओं के उदाहरण प्राप्त होते हैं।
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Attach(blog);
db.Blogs.Remove(blog);
db.SaveChanges();
}
डेटा अपडेट करना
डेटा को आपके निकाय वर्गों के उदाहरणों का उपयोग करके डेटाबेस में अपडेट किया जाता है।
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
var entity = db.Blogs.Find(blog);
entity.Url = "http://sample2.com";
db.SaveChanges();
}








