я не могу добавить второй один-ко-многим (я бы предпочел ноль-ко-многим) отношение к моему классу ....EF Code First множественным 0-к-многим
I Кроме того, используется структура Entity First. Я также использую одну модель с 4 различными видами. 2 из них должно иметь второе соотношение х-ко-многим с классом А, а другие 2 должны иметь отношение один-ко-многим с классом В. Вот как мои классы выглядят:
public class Request
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
...
other properties
...
public virtual ICollection<OrderBasic> Orders { get; set; }
public virtual ICollection<OrderExtended> ExtendedOrders { get; set; }
public Request()
{
Orders = new List<OrderBasic>();
ExtendedOrders = new List<OrderExtended>();
}
}
public class OrderBasic
{
public int ID { get; set; }
...
specific OrderBasic properties
...
public int RequestRefId { get; set; }
[ForeignKey("RequestRefId")]
public virtual Request Request { get; set; }
}
public class OrderExtended
{
public int ID { get; set; }
...
specific OrderExtended properties
...
public int RequestRefId { get; set; }
[ForeignKey("RequestRefId")]
public virtual Request Request { get; set; }
}
View, который отображает другой PartialView в зависимости от конкретного типа заказа, который я хочу. Работает без проблем для типа BasicOrder.
@model RFP_MVC.Models.Request
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<legend>General info:</legend>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
//Request Model properties...
<table class="table table-striped" id="orderTable">
<thead>
<tr>
<th>Material</th>
<th>Quantity</th>
<th>Unit</th>
<th></th>
</tr>
</thead>
<tbody id="OrderZone">
@foreach (var row in Model.ExtendedOrders)
{
Html.RenderPartial("~/Views/Orders/OrderExtendedCreate.cshtml", row);
}
</tbody>
</table>
<button class="btn btn-sm btn-success" type="button" id="addOrder">Add order</button>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
класс DbContext:
namespace RFP_MVC.DAL
{
public class DatabaseContext : DbContext
{
public DbSet<Shipment> shipments { get; set; }
public DbSet<Request> requests { get; set; }
public DbSet<OrderBasic> basicOrders { get; set; }
public DbSet<OrderExtended> extendedOrders { get; set; }
}
}
Я генерировать 4 различные точки зрения на основе Собственость ТипЗапроса. Два представления имеют набор OrderBasic, два других представления должны реализовывать OrderExtended Затем я использую частичный вид для рендеринга свойств модели заказа. Пока я реализую только коллекцию OrderBasic, у меня нет проблем. Когда я добавить модель второго порядка (OrderExtended) я получаю следующую связанную EF ошибку:
An exception of type 'System.ArgumentNullException' occurred in EntityFramework.dll but was not handled in user code. Additional information: Value cannot be null.
Проблемы появляется при попытке отобразить индекс определенного View, даже если это то, что из совершенно несвязанных моделей (Отгрузка в этом случае).
В вашем запросе LINQ что-то пусто. –
Какой запрос LINQ? У меня даже возникли проблемы с загрузкой индекса полностью несвязанной модели. Как только я прокомментирую класс DbSet OrderExtended и список этого класса в моем конструкторе запросов, все хорошо ... Не создаются таблицы. Все отлично работает, когда у меня только один список OrderBasic. – Ciamician
код, который вы предоставили, не может выбрасывать 'System.ArgumentNullException', может отлаживать и выводить точную строку/код, где выбрано исключение. –