【问题标题】:multiple navigation properties to the same table using code first首先使用代码将多个导航属性指向同一个表
【发布时间】:2015-03-22 00:18:00
【问题描述】:

我有一个一对多的关系设置。 IT 工作正常,但现在我正在尝试使用 pdfsharp,我需要一些导航属性方面的帮助。每个测量有 4 张图片。前、后、右、左。我需要在 pdf 中包含所有 4 张图片。我无法用我现在拥有的东西联系到他们。我可以在表格中返回每次测量的图片列表。只是不知道如何更改它才能使其正常工作。

 public class Measurement
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
    public Guid Id { get; set; }
    public DateTime? MeasurementDate { get; set; }
    public decimal? BustMeasurement { get; set; }
    public decimal? ChestMeasurement { get; set; }
    public decimal? FAT { get; set; }

    public string MeasurementUploadBy { get; set; }
    public DateTime? MeasurementUploadDate { get; set; }
    public DateTime? MeasurementEditDate { get; set; }
    public string MeasurementEditBy { get; set; }

    public int? ClientId { get; set; }
    [ForeignKey("ClientId")]
    public virtual Client Client { get; set; }

    public virtual ICollection<Picture> Pictures { get; set; }
}

  public class Picture
{
    public int Id { get; set; }
    public string PictureFrontUrl { get; set; }
    public string PictureBackUrl { get; set; }
    public string PictureRightSideUrl { get; set; }
    public string PictureLeftSideUrl { get; set; }
    public string PictureNote { get; set; }
    public string PictureUploadBy { get; set; }
    public DateTime? PictureUploadDate { get; set; }
    public DateTime? PictureDate { get; set; }
    public string ClientName { get; set; }
    public string PictureType { get; set; }
    public Guid MeasurementId { get; set; }
    [ForeignKey("MeasurementId")]
    public virtual Measurement Measurement { get; set; }
}

测量接口

public Measurement GetMeasurement(Guid id)
    {
        using (var context = new ApplicationDbContext())
        {
            Measurement model = new Measurement();
            model = context.Measurements
               .Include(x => x.Pictures)
               .FirstOrDefault(j => j.Id == id);
            return model;
        }
    }

PDFSharp GEt 调用

apiMeasurementController adapter = new apiMeasurementController();
        Measurement model = new Measurement();
        model = adapter.GetMeasurement(id);

【问题讨论】:

  • 到底是什么问题?你没有得到照片和测量结果吗?你能发布生成的 SQL 吗?
  • 或者你想要4个属性? Picture LeftPicture TopPicture RightPicture Bottom
  • 在pdfsharp控制器中当我需要能够做model.pictures的时候。图片前端网址。现在我对model.pictures一无所知。我将在大约 20 分钟后发布 SQL
  • 是的,我需要所有四张附在测量结果中的照片
  • 如果 model.Pictures 为空,则因为 1. EF 未正确映射或 2. 数据库中没有该特定测量的图片。

标签: c# entity-framework asp.net-web-api2


【解决方案1】:

如果您希望您的测量有 4 张图片,而不是一组图片,您应该有这样的东西:

public class Measurement
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
    public Guid Id { get; set; }

    ....

    // Won't need these
    // public virtual ICollection<Picture> Pictures { get; set; }


    public virtual Picture LeftPicture { get; set; }

    public virtual Picture TopPicture { get; set; }

    public virtual Picture RightPicture { get; set; }

    public virtual Picture BottomPicture { get; set; }
}

还有你的照片:

public class Picture
{
    public int Id { get; set; }

    // Don't need these 4 any more.
    // public string PictureFrontUrl { get; set; }
    // public string PictureBackUrl { get; set; }
    // public string PictureRightSideUrl { get; set; }
    // public string PictureLeftSideUrl { get; set; }

    public string PictureUrl { get; set; }

    public string PictureNote { get; set; }
    public string PictureUploadBy { get; set; }
    public DateTime? PictureUploadDate { get; set; }
    public DateTime? PictureDate { get; set; }
    public string ClientName { get; set; }
    public string PictureType { get; set; }
    public Guid MeasurementId { get; set; }
    [ForeignKey("MeasurementId")]
    public virtual Measurement Measurement { get; set; }
}

在您的 API 中

public Measurement GetMeasurement(Guid id)
{
    using (var context = new ApplicationDbContext())
    {
        Measurement model = new Measurement();
        model = context.Measurements
           .Include(x => x.LeftPicture)
           .Include(x => x.TopPicture)
           .Include(x => x.RightPicture)
           .Include(x => x.BottomPicture)
           .FirstOrDefault(j => j.Id == id);
        return model;
    }
}

【讨论】:

  • 我不需要一个图片网址吗?
  • 是的,对不起,你会的
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 2011-08-26
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多