Создать заказ
Order order = new Order(1, inputOuter, inputInner, inputSauce, 0);
ord.add(order) // Add the order to your list.
Стоимость заказа задается методом setOrder (int repOrderId, String repOuter, String repInner, String repSauce)
изменить этот метод к следующему.
public void setOrder() {
double calcCost;
double outerCost = 0;
double innerCost = 0;
double sauceCost = 0;
// Outer Cost
if (outer.equalsIgnoreCase("Bun")) {
outerCost = 0.5;
} else if (outer.equalsIgnoreCase("Bread")) {
outerCost = 0.25;
} else if (outer.equalsIgnoreCase("Brioche")) {
outerCost = 0.75;
} else {
System.out.println("Invalid Bread Type");
}
// Inner cost
if (inner.equalsIgnoreCase("Ham")) {
innerCost = 0.5;
} else if (inner.equalsIgnoreCase("Cheese")) {
innerCost = 0.25;
} else if (inner.equalsIgnoreCase("Cucumber")) {
innerCost = 0.75;
} else {
System.out.println("Invalid Filling Type");
}
// Sauce Cost
if (sauce.equalsIgnoreCase("Mayo")) {
sauceCost = 0.5;
} else if (sauce.equalsIgnoreCase("Butter")) {
sauceCost = 0.25;
} else if (sauce.equalsIgnoreCase("Marmite")) {
sauceCost = 0.75;
} else {
System.out.println("Invalid Sauce Type");
}
calcCost = outerCost + innerCost + sauceCost;
this.Cost = calcCost;
}
Теперь вы можете получить стоимость, вызвав getCost () в порядке следующим образом.
Чтобы рассчитать стоимость заказа, вызовите order.setOrder ( ); Чтобы получить стоимость заказа, вызовите order.getCost ();
ПРИМЕЧАНИЕ. Не используйте == для сравнения строки. Всегда используйте equals () или equalsIgnoreCase ().
Атрибут [ForeignKey]
переопределяет соглашение по умолчанию для внешнего ключа. Это позволяет нам указывать свойство внешнего ключа в зависимом объекте, имя которого не совпадает со свойством первичного ключа основного объекта.
В вашем случае это создаст столбец внешнего ключа с именем Users_ID в таблице Sims, предотвращая генерацию столбца ID в базе данных.
Потому что это говорит EF, что поле внешнего ключа , используемое для хранения идентификатора связанной записи «Users», называется «Users_ID».
Если вам явно не нужно, чтобы это поле было доступно в вашей Sims
сущности, то вы можете просто полностью его исключить & amp; вам вообще не нужно иметь атрибут ForeignKey & amp; EF справится с этим за кулисами.
В качестве альтернативы, вы можете назвать поле внешнего ключа «UsersId», и оно будет предполагать, что это внешний ключ из-за соглашения.
Так что с любым из них должно быть все в порядке:
//no explicit foreign key
public class Sims
{
public int ID { get; set; }
public Users Users { get; set; }
}
//explicit foreign key but EF works it out via convention
public class Sims
{
public int ID { get; set; }
public int UsersId { get; set; }
public Users Users { get; set; }
}
//explicitly named foreign key which is named differently from
//convention so needs to be pointed at. note nameof() operator
//which will give a compiler error should you rename it, so is
//better than a magic string
public class Sims
{
public int ID { get; set; }
[ForeignKey(nameof(Users))]
public int MyUsersFkField { get; set; }
public Users Users { get; set; }
}
Вы также можете добавить атрибут к свойству Users
и указать его в поле Id.
Важным примечанием является то, что если вы используете свойство FK с нетрадиционным названием и вообще не задают внешний ключ , то EF создаст поле FK UsersId
в базовой базе данных используйте это (но это не будет выставлено в вашей модели)