2017-01-29 2 views
0

Я создал веб-сайт аукциона с этими двумя моделями:ASP.NET MVC ленивая загрузка не работает с ICollection

public class ItemModel 
{ 
    [Key] 
    public int ItemModelId { get; set; } 

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] 
    public DateTime DateCreatedUtc { get; set; } 

    ... 

    [ForeignKey("AcceptedBidModel")] 
    public int? AcceptedBidModelId { get; set; } 

    public virtual BidModel AcceptedBidModel { get; set; } 

    public virtual ICollection<BidModel> ItemBids { get; set; } 
} 

public class BidModel 
{ 
    [Key] 
    public int BidModelId { get; set; } 

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] 
    public DateTime DateCreatedUtc { get; set; } 

    [Required] 
    [Range(1, Int32.MaxValue, ErrorMessage = "The bid must have a positive value")] 
    public int Bid { get; set; } 

    [ForeignKey("ItemModel")] 
    public int ItemModelId { get; set; } 

    public virtual ItemModel ItemModel { get; set; } 
} 

Все работало отлично с ItemBids быть заполнены данными, но когда я добавил BidModel к ItemModel (ставка принята) ItemBids стал пустой.

[ForeignKey("BidModel")] 
public int? BidModelId { get; set; } 

public virtual BidModel BidModel { get; set; } 

Может кто-нибудь объяснить это поведение?

+0

пожалуйста, вы можете показать мне код, где и добавляемые и его не Sucess –

+0

Как предназначен ваш стол? Если его отношение «один-много» между «BidModel» и «ItemModel», тогда имеющее «ICollection », имеет смысл, но наличие другого свойства BidModel изменит его поведение. – Developer

+0

У одного элемента ItemModel может быть много BidModel, но я хотел иметь еще одну «BidModel» в «ItemModel» для принятой ставки. Разве это невозможно? Как-то ленивая загрузка сбивается с толку, когда я добавил этот дополнительный «BidModel». – rhedin

ответ

0

Я решил удалить его, сняв принятую заявку (AcceptedBidModel) и создал bool в BidModel, указав, является ли ставка принятой.

Вот новые модели:

public class ItemModel 
{ 
    [Key] 
    public int ItemModelId { get; set; } 

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] 
    public DateTime DateCreatedUtc { get; set; } 

    ... 

    public virtual ICollection<BidModel> ItemBids { get; set; } 

    [NotMapped] 
    public BidModel AcceptedBid 
    { 
     get { 
      return ItemBids.Where(s => s.Accepted).SingleOrDefault(); 
     } 
     set {} 
    } 
} 

public class BidModel 
{ 
    [Key] 
    public int BidModelId { get; set; } 

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] 
    public DateTime DateCreatedUtc { get; set; } 

    public bool Accepted { get; set; } 

    [Required] 
    [Range(1, Int32.MaxValue, ErrorMessage = "The bid must have a positive value")] 
    public int Bid { get; set; } 

    [ForeignKey("ItemModel")] 
    public int ItemModelId { get; set; } 

    public virtual ItemModel ItemModel { get; set; } 
} 
Смежные вопросы