سلام بنده می خواهم به روش codefirst بصورت همزمان دو دیتابیس ایجاد کنم
ممنون میشم راهنمایی فرمایید.
در داخل Startup این کد ها رو نوشتم
services.AddDbContext<SiteContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("SiteConnection"));
});
services.AddDbContext<Site2Context>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("Site2Connection"));
});
در داخل appsettings این کد ها رو
{
"ConnectionStrings": {
"SiteConnection": "Data Source=.;Initial Catalog=Sitem_DB;Integrated Security=True;MultipleActiveResultSets=True;",
"Site2Connection": "Data Source=.;Initial Catalog=Site2m_DB;Integrated Security=True;MultipleActiveResultSets=True;"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}
خطایی که بعد از میده add-Migration
More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and the '--context' parameter for dotnet commands.
سلام
اگر شما بخواید 2 دیتابیس داشته باشید باید عملا 2 کانکشن استرینگ هم داشته باشید. چون نمیشه با یک کانکشن استرینگ همزمان به دو دیتابیس وصل شد.
شما Connection String خودتون رو توی فایل appsetting.json تعریف کردید. این کار صحیح نیست چون اطلاعات موجود در این فایل استاتیک یا ثابت هست و شما نمیتونید بین کانکشن استرینگ های مختلف swtich کنید.
البته کلا پیشنهاد میشه از یک دیتابیس استفاده کنید چون استفاده از بیش از یک دیتابیس در یک پروژه مشکلات زیادی رو براتون به همراه خواهد داشت. در هر صورت برای تغییر کانکشن استرینگ باید Connection String رو در کلاس DbContext بنویسید تا بتونید کانکشن رو تغییر بدید.
از کدهای زیر برای انجام این کار می تونید استفاده کنید
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//&& !optionsBuilder.IsConfigured
if (DbManager.DbName != null )
{
var dbName = DbManager.DbName;
optionsBuilder.UseSqlServer("Data Source =.; Database = " + dbName + "; User Id = sa; Password = 1;");
}
}
public static class DbManager
{
public static string DbName;
public static string GetDbConnectionString(string dbName)
{
return DbConnectionManager.GetConnectionString(dbName);
}
}
public static class DbConnectionManager
{
public static List<DbConnection> GetAllConnections()
{
List<DbConnection> result;
using (StreamReader r = new StreamReader("appsetting.json"))
{
string json = r.ReadToEnd();
result = DbConnection.FromJson(json);
}
return result;
}
public static string GetConnectionString(string dbName)
{
return GetAllConnections().FirstOrDefault(c => c.Name == dbName)?.Dbconnection;
}
}
public class DbConnection
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("dbconnection")]
public string Dbconnection { get; set; }
public static List<DbConnection> FromJson(string json) => JsonConvert.DeserializeObject<List<DbConnection>>(json, Converter.Settings);
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
}
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
57
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
395
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
562
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
57
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|