public class Order
{
public int Id {get;set;}
[DisplayName("User")]
public long UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
public decimal Amount { get; set; }
}
С IEnumurable
Когда выставлять IEnumerable вместо ICollection?
public class User
{
public int Id{get;set;}
public virtual IEnumerable<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
myUser.Orders=OrderRepository.GetByUserId(myUser.Id);
return myUser;
}
С ICollection
public class User
{
public int Id{get;set;}
public virtual ICollection<Order> Orders { get; set; }
}
public User GetWithOrders()
{
var myUser=UserRepository.GetByEmail("[email protected]");
return myUser;
}
Я не отложенной загрузки, используя IEnumerable
для свойства навигации. Поэтому я должен получить заказы для этого пользователя с другим запросом.
У меня есть навигация с ICollection
. Поэтому я могу получать заказы от пользователя. Это кажется крутым. Но затем я могу добавлять новые заказы пользователю в Контроллер без использования службы или репозитория.
Это своего рода манипулирование данными на уровне контроллера. Это анти-шаблон?
Во-первых, я подумал также viewmodel. Но я не был уверен, что это может принести больше сложности или нет. Я буду использовать viewmodels, если нужно. Благодарю. –
Дело не в моделе, на самом деле. Это модель BLL или Domain. Объекты, представляющие ваш прецедент (пользователь, который может иметь заказы). Используйте это, если вы не хотите подвергать свои модели данных воздействию внешних факторов. – CodeCaster
Почему вы возвращаете '_orders.AsEnumerable();' while '_orders' уже' IEnumerable '? –