यहां एक ऐसा दृष्टिकोण है जो आपके लिए काम कर सकता है।
यदि मैं इसे साझा प्रोजेक्ट के फ़ोल्डर में चलाता हूं, तो इसे startup.cs में निर्दिष्ट कनेक्शन स्ट्रिंग तक पहुंच नहीं है।
Startup.cs
मैं यह सोचते हैं रहा है कि अपने Startup.cs में, आप Configuration
तक पहुँचने के बजाय कठिन द्वारा यह कोडिंग से कनेक्शन स्ट्रिंग निर्दिष्ट कर रहे हैं। इसके अलावा, मुझे लगता है कि आपके Startup.cs फ़ाइल के निर्माता में, आप कुछ स्रोतों से कॉन्फ़िगरेशन सेट अप कर रहे हैं। दूसरे शब्दों में, अपने Startup.cs कुछ इस तरह दिख सकता है:
public class Startup
{
public IConfiguration Config { get; set; }
public Startup(IHostingEnvironment env)
{
var config = new Configuration()
.AddJsonFile("config.json")
.AddUserSecrets()
.AddEnvironmentVariables();
Config = config;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MyDbContext>(options =>
{
options.UseSqlServer(Config["ConnectionStrings:MyDbContext"]);
});
}
public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider)
{
var db = serviceProvider.GetRequiredService<MyDbContext>();
db.Database.AsSqlServer().EnsureCreated();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
config.json
इसके अलावा, मैं यह सोचते कर रहा हूँ कि आप जड़ में एक config.json लिए कनेक्शन स्ट्रिंग जोड़ रहे हैं अपनी परियोजना के (या है कि आप इसे उपयोगकर्ता रहस्य या पर्यावरण चर के माध्यम से जोड़ने।) आपका config.json कुछ इस तरह दिख सकता है:
{
"ConnectionStrings": {
"MyDbContext": "Some-Connection-String"
}
}
आप इसे उस तरह से नहीं कर रहे हैं, यह कोशिश कर रहा लायक हो सकता है ।
मैं अगर तुम DbContext की OnConfiguring विधि में कनेक्शन स्ट्रिंग निर्दिष्ट लेकिन मैं वास्तव में इस कोड विन्यास से अलग रखना चाहते हैं यह है कि यह साझा परियोजना से काम करता है जैसे प्रश्नों से बटोरा है।
DbContext
मेरी मान्यताओं से ऊपर सही हैं, तो आप एक ही पैटर्न है कि आप Startup
वर्ग में प्रयोग किया जाता का उपयोग करके DbContext
में कनेक्शन स्ट्रिंग पहुँच सकते हैं। यही है, DbContext
कन्स्ट्रक्टर में, IConfiguration
सेटअप करें। फिर, OnConfiguring
में, कनेक्शन स्ट्रिंग तक पहुंचें।यह कुछ इस तरह दिख सकता है:
public class MyDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<SomeModel>().Key(e => e.Id);
base.OnModelCreating(builder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connString = Config["ConnectionStrings:MyDbContext"];
optionsBuilder.UseSqlServer(connString);
}
public IConfiguration Config { get; set; }
public MyDbContext()
{
var config = new Configuration()
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Config = config;
}
}
परियोजना संरचना
आप निश्चित रूप से करेंगे अपने साझा परियोजनाओं की जड़ में एक config.json फ़ाइल के लिए भी फ़ोल्डर की जरूरत है। तो, अपनी परियोजनाओं को 'संरचना कुछ इस तरह दिखाई दे सकता है:
SharedDataContext
Migrations
config.json
project.json
WebApp
config.json
project.json
Startup.cs
ऊपर में, दोनों config.json फ़ाइलों को एक कनेक्शन स्ट्रिंग DbContext
के लिए सेटिंग होते हैं।
कुछ विचार
आप config.json कनेक्शन स्ट्रिंग सामान डुप्लिकेट पसंद नहीं है, तो आप पर्यावरण चर या उपयोगकर्ता रहस्य बजाय उपयोग कर सकते हैं।
आप अपनी कनेक्शन स्ट्रिंग कहां संग्रहीत कर रहे हैं? क्या यह Startup.cs में कोडित है? –
यह config.json में है और कॉन्फ़िगरेशन के साथ लोड किया गया है AddDbContext –
CuddleBunny