2009-04-24 5 views

Répondre

0

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; 
} 
Questions connexes