C# EntityFramework核心数据库第一个多对多关系

C# EntityFramework核心数据库第一个多对多关系,c#,entity-framework-core,C#,Entity Framework Core,有些客户有一些图片 public class Customer { ... public virtual IEnumerable<CustomerImage> CustomerImages {get; set;} } public class CustomerImage { public virtual int CustomerID { get; set; } public virtual int ImageDataID {

有些客户有一些图片

public class Customer {
  ...
  public virtual IEnumerable<CustomerImage> CustomerImages {get; set;}
}

    public class CustomerImage
    {
        public virtual int CustomerID { get; set; }
        public virtual int ImageDataID { get; set; }
        public virtual byte ImageType { get; set; }
        public virtual Image Image { get; set; }
    }

    [Table("ImageData")]// CS0542: member names cannot be the same as their enclosing type.
    public class Image
    {
        public virtual int ImageDataID { get; set; }

        //[JsonConverter(...)] It 'should' do it as Base64 automatically, apparently.
        public virtual byte[] ImageData { get; set; }
}
    }

我可以把它变成一个复杂的属性吗? 显而易见的是

  public Image PrimaryImage { get { return CustomerImages.FirstOrDefault(z => z.ImageType == 1); } }
但这让人感觉很不舒服,尤其是在我的控制器中,我需要
。包括(z=>z.CustomerImages),然后将
CustomerImages
标记为
[JsonIgnore]`

我想将
Customer
公开为OData,主映像Base64编码在respose JSON中

应该怎么做

SELECT c.CustomerId, i.ImageData AS PrimaryImage
FROM Customer c
  LEFT JOIN CustomerImage ci ON c.CustomerId = ci.CustomerId AND ci.ImageType = 1
  LEFT JOI Image i ON ci.ImageId = i.ImageId
  public Image PrimaryImage { get { return CustomerImages.FirstOrDefault(z => z.ImageType == 1); } }