我正在使用 Entity Framework 5,我首先对我正在使用的数据库进行逆向工程代码,然后我添加了一个 ADO.NET 实体数据模型,以便我可以使用存储过程作为逆向工程代码首先没有提供使用存储过程。这是访问存储过程的唯一方法吗?
此外,我意识到,在完成逆向工程代码的第一个过程之后,会创建一堆类(来自数据库的表),但是一旦我添加了 ADO.NET 实体数据模型,大多数类就会消失。有人知道为什么吗?
我正在使用 Entity Framework 5,我首先对我正在使用的数据库进行逆向工程代码,然后我添加了一个 ADO.NET 实体数据模型,以便我可以使用存储过程作为逆向工程代码首先没有提供使用存储过程。这是访问存储过程的唯一方法吗?
此外,我意识到,在完成逆向工程代码的第一个过程之后,会创建一堆类(来自数据库的表),但是一旦我添加了 ADO.NET 实体数据模型,大多数类就会消失。有人知道为什么吗?
DbContext.Database 属性公开了有用的方法 http://msdn.microsoft.com/en-us/library/system.data.entity.database(v=vs.103).aspx
ExecuteSqlCommand( string, object[] )
http://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand(v=vs.103).aspx
SqlQuery<TEntity>( string, object[] )
http://msdn.microsoft.com/en-us/library/gg696545(v=vs.103).aspx
您可以遵循一种模式来使用代码优先方法创建或支持存储过程。这是一个链接,您可以使用以下链接进行操作:
http://www.codeproject.com/Articles/179481/Code-First-Stored-Procedures
简而言之,您需要首先对模型执行相同的操作,创建一个支持输入的类和一个支持结果集的类。
关于数据实体模型和缺失的类。您需要考虑在项目中只能采用一种方法:代码优先/(模型优先/数据库优先),因此这可能是您没有看到这些类的原因。
您可以使用 Context.Database.SqlQuery 来运行 SP。