У меня две базы данных на одном сервере SQL.база данных 1 является базой данных Specs, а база данных 2 является базой данных каталога деталей.Каталог запчастей является только справочными данными для группы исследований и разработок.Все создания и обновления будут в базе данных Specs.Страница подробностей прекрасно работает только с базой данных Specs.Когда я пытаюсь добавить во вторую базу данных, когда что-то идет не так.Для моего примера: я пытаюсь получить описание деталей из каталога запчастей.
Startup.cs
var connection = "Data Source = NAVSQL2017\\NAVSQL2017; Initial Catalog = SPECS; Persist Security Info = True; User ID = test; Password = xxx";
services.AddDbContext<RovingContext>(options => options.UseSqlServer(connection));
var connection1 = "Data Source = NAVSQL2017\\NAVSQL2017; Initial Catalog = PARTS_CATALOG; Persist Security Info = True; User ID = test; Password = xxx";
services.AddDbContext<ItemContext>(options => options.UseSqlServer(connection1));
appsettings.json
"ConnectionStrings": {
"RovingContext": "Server=(localdb)\\mssqllocaldb;Database=RovingContext-0afacde4-1953-4537-8410-5d670f37debc;Trusted_Connection=True;MultipleActiveResultSets=true",
"ItemContext": "Server=(localdb)\\mssqllocaldb;Database=ItemContext-0afacde4-1953-4537-8410-5d670f37debc;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Context.cs
namespace Spec4.Models
{
public class RovingContext : DbContext
{
public RovingContext (DbContextOptions<RovingContext> options)
: base(options)
{
}
public DbSet<Spec4.Models.RovingHeader> Roving_Header { get; set; }
public DbSet<Spec4.Models.RovingLine> Roving_Line { get; set; }
}
public class ItemContext : DbContext
{
public ItemContext (DbContextOptions<ItemContext> options)
: base(options)
{
}
public DbSet<Spec4.Models.Item> Item { get; set; }
}
}
модели:
namespace Spec4.Models
{
public class RovingHeader
{
[Key]
[Required]
public string Roving_No { get; set; }
[Required]
public string Description { get; set; }
[DataType(DataType.Date)]
public DateTime Mod_Date { get; set; }
public ICollection<RovingLine> RovingLine { get; set; }
}
}
namespace Spec4.Models
{
public class RovingLine
{
public string Roving_No { get; set;}
[Required]
public string Item_No { get; set; }
[Required]
public decimal QTY { get; set; }
[Key]
public int RowId { get; set; }
[ForeignKey("No_")]
public Item Item { get; set; }
[ForeignKey("Roving_No")]
public RovingHeader RovingHeader { get; set; }
}
}
namespace Spec4.Models
{
public class Item
{
[Column("Item")]
[Key]
public string No_ { get; set; }
public string Description { get; set; }
public ICollection<RovingLine> RovingLine { get; set; }
}
}
Details.cshtml
@page
@model Spec4.Pages.DetailsModel
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<div>
<h4>RovingHeader</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.RovingHeader.Description)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.RovingHeader.Description)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.RovingHeader.Mod_Date)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.RovingHeader.Mod_Date)
</dd>
<dt>
@Html.DisplayNameFor(model => model.RovingHeader.RovingLine)
</dt>
<dd>
<table class="table">
<tr>
<th>Item</th>
<th>QTY</th>
</tr>
@foreach (var item in Model.RovingHeader.RovingLine)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Item_No)
</td>
<td>
@Html.DisplayFor(modelItem => item.Item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.QTY)
</td>
</tr>
}
</table>
</dd>
</dl>
</div>
<div>
<a asp-page="./Edit" asp-route-id="@Model.RovingHeader.Roving_No">Edit</a> |
<a asp-page="./Index">Back to List</a>
</div>
details.cshtml.cs
namespace Spec4.Pages
{
public class DetailsModel : PageModel
{
private readonly Spec4.Models.RovingContext _context;
public DetailsModel(Spec4.Models.RovingContext context)
{
_context = context;
}
public RovingHeader RovingHeader { get; set; }
public async Task<IActionResult> OnGetAsync(string id)
{
if (id == null)
{
return NotFound();
}
RovingHeader = await _context.Roving_Header
.Include(s => s.RovingLine)
.ThenInclude(e => e.Item)
.AsNoTracking()
.FirstOrDefaultAsync(m => m.Roving_No == id);
if (RovingHeader == null)
{
return NotFound();
}
return Page();
}
}
}
Я получаю сообщение об ошибке: ОШИБКА SQL: при обработке запроса возникло необработанное исключение.SqlException: Неверное имя объекта «Элемент».System.Data.SqlClient.SqlCommand + <> c.b__122_0 (результат задачи)
Буду благодарен за любые предложения.