У вас есть доступ к схеме данных? В 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;
}