2010-05-26 2 views
1

Я новичок в Entity Framework и задаюсь вопросом, могу ли я использовать его так, как хотелось бы. Я использую Visual Studio 2010 и .NET 4.Entity Framework EDMX Model & Stored Procs

У меня есть система управления контентом, которая хранит все данные в поле xml таблицы. Таблица - cmsContent - содержит только два поля: id и XmlNode

Я хочу создать хранимые procs, которые запрашивают поле XML, чтобы вернуть значимые данные, данные продукта в этом случае. например ..

ВЫБОР C.id AS [Id], C.xmlNode.value ('(/ узел/данных [@alias = ''[1]), «' NVARCHAR ProdName ']' (1024) ') AS ProductName, C.xmlNode.value (' (/ node/data [@alias = '' ProdDesc '']) [1] ',' NVARCHAR (1024) ') AS ProductDescription FROM cmsContent C ГДЕ C.xNode.query ('data (/ node [1]/@ nodeTypeAlias)'). Value ('.', 'VARCHAR (30)') = 'Продукт'

Затем я хочу отобразить вывод из этих сохраненных процессов в мои классы объектов через диаграмму enim EDMX. Поэтому я хотел бы сопоставить вышеуказанный запрос с классом Products. Класс продуктов будет доступен только для чтения, нет необходимости обновлять этот объект, поскольку он является doen через CMS.

Возможно ли это использовать рамки entiry таким образом? Если да, то как, поскольку я не могу заставить хранимые процедуры генерировать требуемые классы в диаграмме EDMX, поскольку это не происходит, когда я использую мастер?

ответ

1

Если это только для чтения, вы можете предоставить DefiningQuery для EntitySet в модели хранения. Это, по сути, действует как просмотр хранилища, доступный только для чтения, и вы можете определить форму результата, как хотите. Затем вы можете либо сопоставить его с сущностью, либо сложным типом (сложный тип может быть проще, если он доступен только для чтения.)

<Schema ...> 
    <EntityContainer ...> 
    <EntitySet Name="blah" EntityType="BlahModel.Store.blah"> 
     <DefiningQuery> 
     select ... from blah 
     </DefiningQuery> 
    </EntitySet> 
    </EntityContainer> 
    ... 
</Schema> 
0

Я думаю, вам нужно создать сложный тип и сопоставить SP с этим. См. Это MSDN article.

Смежные вопросы