Avez-vous accès au schéma de données? Dans Entity Framework, vous ne pouvez pas avoir deux entités qui référencent la même table, ** au moins vous ne pouviez pas le faire dans le passé. Cela dit. Vous pouvez créer une vue Sql avec la colonne de données.
CREATE VIEW [dbo].[ImageData]
SELECT
Id,
Data
FROM Image
Maintenant, vous pouvez créer une entité appelée Données d'image qui reflète votre schéma ci-dessus.
Si vous avez besoin de mettre à jour la vue, cela est également possible, vous devez simplement créer un trigger sur la vue appelée INSTEAD OF TRIGGER.
-- INSERT Trigger
CREATE TRIGGER [dbo].[TR_ImageData_Update] ON [ImageData]
INSTEAD OF INSERT
AS
BEGIN
UPDATE [Image]
SET Data = i.Data
FROM Inserted AS i
END;
GO
Cela serait probablement idéal dans la plupart des cas. Cependant, si vous n'avez pas accès au schéma de la base de données, vous ne pourrez peut-être pas le faire. Au lieu de cela, vous créez une requête par défaut à partir de votre entité image.
public static IQueryable GetImages(this DbContext db)
{
var query = db.Images.AsQueryable();
return query.Select(r => new Image() { Id = r.id....});
}
public static IQueryable GetImageData(this DbContext db, int imageId)
{
var query = db.Images.AsQueryable();
query = query.Where(x => x.Id == imageId);
query = query.Select(x => new ImageData() { Id = r.Id, Data = r.Data });
return query;
}