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); } }