У вас есть доступ к схеме данных?
В Entity Framework вы не можете иметь две сущности, которые ссылаются на одну и ту же таблицу, ** по крайней мере, вы не могли в прошлом.
С этим сказал. Вы можете создать Sql VIEW со столбцом данных.
CREATE VIEW [dbo].[ImageData]
SELECT
Id,
Data
FROM Image
Теперь вы можете создать данные изображения с именем объекта, которые отражают вашу схему выше.
Если вам нужно обновить представление, это также возможно, вам просто нужно создать триггер для представления, называемый 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
Это, вероятно, было бы идеально в большинстве случаев. Однако, если у вас нет доступа к схеме базы данных, вы не сможете это сделать.
Вместо этого вы должны создать запрос по умолчанию для вашего объекта изображения.
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;
}