Ho due tabelle che hanno una relazione di uno a zero o uno, InvoiceSale
e Budget
. Una fattura di vendita può avere un Budget
(o meno), ma ogni Budget
appartiene a una sola fattura di vendita.
Questa è la mia classe InvoiceSale
:
public class InvoiceSale
{
public int Id { get; set; }
public int NumberInvoice { get; set; }
public DateTime InvoiceSaleDate { get; set; }
public Budget Budget{ get; set; }
}
E questa è la mia classe Budget
:
public class Budget
{
public int Id { get; set; }
public byte StateId { get; set; }
public long Total { get; set; }
public InvoiceSale InvoiceSale { get; set; }
}
E questa è la mia fluente configurazione API della relazione:
HasOptional(fv => fv.Budget)
.WithOptionalDependent(p => p.InvoiceSale)
.Map(m => m.MapKey("BudgetId")); //I don't have a navigation property for
//this
Quando invio dati da un modulo, invio il valore BudgetId
di un elenco a discesa, ma quando provo a salvare le modifiche in Entity Framework, il campo BudgetId
che è un campo facoltativo, inserisce sempre null.
Poiché non ho una proprietà di navigazione per BudgetId
, non so come inviare questo valore al database con Entity Framework.
Ecco l'azione del controller che inserisce i dati:
[HttpPost]
public ActionResult CreateInvoiceSale(InvoiceSale newInvoiceSale)
{
var invoiceSale = new InvoiceSale
{
NumberInvoice = newInvoiceSale.NumberInvoice ,
InvoiceSaleDate = newInvoiceSale.InvoiceSaleDate ,
// Here I need to pass the BudgetId value, but how can I do it
// without a navigation property?
};
_context.InvoiceSales.Add(invoiceSale);
_context.SaveChanges();
return Json("ok"):
}
Aggiungi Foreignkey nell'entità InvoiceSale
public class InvoiceSale
{
public int Id { get; set; }
public int BudgetId { get; set; }
public int NumberInvoice { get; set; }
public DateTime InvoiceSaleDate { get; set; }
public Budget Budget { get; set; }
}
[HttpPost]
public ActionResult CreateInvoiceSale(InvoiceSale newInvoiceSale)
{
var invoiceSale = new InvoiceSale
{
BudgetId = newInvoiceSale.BudgetId,
NumberInvoice = newInvoiceSale.NumberInvoice,
InvoiceSaleDate = newInvoiceSale.InvoiceSaleDate,
//Here i need to pass the BudgetId value, but how can i do without a
//navigation property
};
_context.InvoiceSales.Add(invoiceSale);
_context.SaveChanges();
return Json("ok"):
}
Necessario assegnare un valore nella tabella InvoiceSale, utilizzare questa riga BudgetId = newInvoiceSale.BudgetId,